当前位置: 首页 > news >正文

Python天梯赛L1-018-大笨钟详解

018-大笨钟

微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。例如在23:00敲钟,就是“当当当当当当当当当当当”,而到了23:01就会是“当当当当当当当当当当当当”。在午夜00:00到中午12:00期间(端点时间包括在内),笨钟是不敲的。

下面就请你写个程序,根据当前时间替大笨钟敲钟。

输入格式:

输入第一行按照hh:mm的格式给出当前时间。其中hh是小时,在00到23之间;mm是分钟,在00到59之间。

输出格式:

根据当前时间替大笨钟敲钟,即在一行中输出相应数量个Dang。如果不是敲钟期,则输出:

Only hh:mm.  Too early to Dang.

其中hh:mm是输入的时间。

输入样例1:

19:05

输出样例1:

DangDangDangDangDangDangDangDang

输入样例2:

07:05

输出样例2:

Only 07:05.  Too early to Dang.

这道题目的思路非常简单,在hh的数<12或者刚好是12:00的时候,不dang;其余时候若mm不为0,当hh+1下;若mm为0,当hh下。

思路确定之后我们再来看表达,这个表达显然是有一些地方值得注意的。

  • hh、mm的形式都是按照钟表时间的形式,存在第一位为零的情况,这种时候怎么表示,怎么比较。

实验可得,直接将05看做5参与运算是不可行的,Python中又不接受以0开头的十进制整型数据,所以下面的尝试将报错。

#这是错的
h,m = map(int,input().split())
if 0 <= h < 12:
    print(f'Only {h}:{m}.  Too early to Dang.')
if h == 12 and m == 0:
    print(f'Only {h}:{m}.  Too early to Dang.')
  •  这个时候我们想到我们需要输入的是hh:mm格式的数据,显然他和两个整型数据有区别,那不妨把它看作字符串,我们需要用到字符串的切片方法提取对应索引位置上的数字进行比较。
time[0]、time[2]、time[0:2]

这样我们可以有效的得到我们输入的每个数字,那怎么讲这些单个的数字进行比较呢 。

  • 我们要明白,不加限制得到的输入都是以字符串形式呈现的,所以要想将字符串形式的数字转换成整型或者浮点型的格式,就需要加上int、float的限定,这里我们很快通过字符串的切片得到完整的hh和mm,值得注意的是,字符串的切片包左不包右,我们将切出来的hh和12比较,将切出来的mm和0进行比较,按照我们最开始的思路,这个题目就很简单啦。
Time=input()
A=int(Time[0:2])-12#判断后半天还是前半天
if int(Time[0:2])>12:
    if int(Time[3:5])>0:
#分支嵌套,在需要dang的情况下如果mm再大于0,则多敲一下
        print("Dang"*(A+1), end="")
#在需要dang的情况下如果mm不大于0,则直接敲hh比12多的次数
    else:
        print("Dang"*A, end="")
#如果大分支都不需要dang我们直接按格式输出
else:
    print("Only %s.  Too early to Dang."%(Time))

PTA篇 注:PTA代码其中很多是我很久之前学编程的时候做过的,可能借鉴了当时比较火的方法、资料或者身边人的思维,也有的题当时就注释了一些很基础的知识点,现在重新梳理我重新阅读了题目和代码,尽量跳出这个答案去想思路,试试错或者找到其他可行的方法,加入了一些更直接的注释方便大家理解。关于题目的分析是我一点点完善的,关于代码的借鉴已经难以找全出处。若有侵权,请联系我我将及时做出补救。

相关文章:

  • [杂学笔记]工厂模式、多态、内存空间区域划分、cp指令破坏软连接问题、UDP如何实现可靠传输、滑动窗口的原理、进程与线程、线程之间的通信
  • 案例|某开关站室外轮式巡检机器人解决方案
  • ELK之elasticsearch基本使用教程
  • 常用的HTML meta标签有哪些
  • 【SoC设计的简单艺术】第九章:芯片级的复杂性
  • JavaWeb校园二手交易平台(附源码+数据库脚本)
  • rtpengine build mr12.5.1 镜像
  • C++ DAY4
  • 面试题 - Vue 3 如何优化性能?
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter22-处理 XML
  • 【量化-什么是信息?怎么有效的学习?关键字摘取】
  • [KashiCTF 2025] Crypto/Pwn
  • Docker Compose一键部署Spring Boot + Vue项目
  • 微前端 Micro app
  • 数学建模之数学模型—2:非线性规划
  • MySQL 连表查询:原理、语法与优化
  • 005:Cesium.viewer 知识详解、示例代码
  • 小迪安全-24天-文件管理,显示上传,黑白名单,访问控制
  • 【R语言】dplyr包经典函数summarise函数
  • 永洪科技旗下BI产品,成功入选“金融信创优秀解决方案“
  • 夜驾遇东北虎隔窗对视?延吉林业局:村里有牛被咬死,保险公司会理赔
  • “上海-日喀则”援藏入境旅游包机在沪首航
  • 雅安市纪委监委回应黄杨钿甜耳环事件:相关政府部门正在处理
  • 光明日报社副总编辑薄洁萍调任求是杂志社副总编辑
  • 新城市志|GDP万亿城市,一季度如何挑大梁
  • 《歌手》回归,人均技术流,00后整顿职场