鱼C论坛

 找回密码
 立即注册
查看: 3538|回复: 7

关于计时器中出现负数的问题

[复制链接]
发表于 2022-4-21 11:10:10 From FishC Mobile | 显示全部楼层
Victor0321 发表于 2022-4-21 10:52
打扰了。。。。。 我想明白了。。。。。  我本来就是从后往前 所以就不需要while 循环了。。。  只想问下各 ...

递归会导致溢出,资源耗尽。递归不能太大次数如千万次。

至于倒数,你可以试试往反方向想,从 0 开始计算,每次 +1 秒,当时间达目标时间时,暂停。这样就能避免负数了。而且也无需另外加个 unit列表,可以试试用取商和取余方法解决。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-21 12:54:46 From FishC Mobile | 显示全部楼层
代码供参考:
  1. import time

  2. class Timer:
  3.         def __init__(self, hh, mm, ss):
  4.                 self.hour = hh
  5.                 self.minute = mm
  6.                 self.second = ss
  7.        
  8.         def countdown(self):
  9.                 while self.hour or self.minute or self.second:
  10.                         print(self.hour, self.minute, self.second)
  11.                         self.second -= 1
  12.                         if self.second < 0:
  13.                                 self.second = 59
  14.                                 self.minute -= 1
  15.                         if self.minute < 0:
  16.                                 self.minute = 59
  17.                                 self.hour -= 1
  18.                         time.sleep(1)
  19.                 print(self.hour, self.minute, self.second)
  20.                 print("countdown end")

  21. T = Timer(0, 1, 13) # 小时、分钟、秒数
  22. T.countdown() # 开始倒数
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-21 13:16:37 From FishC Mobile | 显示全部楼层
Victor0321 发表于 2022-4-21 13:09
我明白了!换成那个题目的话就是while 年or月or日or时or分or秒  < 0

是啊,只要确保全部不是 0,就继续循环
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-14 02:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表