[英]Trouble with a Python Countdown Program
我最近大约一个月前完成了Python课程。 我将继续通过创建程序来扩展对Python的了解。
以下代码是用于Python倒数计时程序的程序。 该程序的作用是要求用户输入秒,分钟和小时的计数。
无论如何,我注意到程序中发生了2个Bug。
第一个错误:如果我们输入小时和秒数(没有分钟数),程序将计算该小时的剩余时间,但不会减去该小时并将分钟数设置回59。而是打印分钟为负数。
第二个错误:如果我们输入小时,秒和分钟计数,程序将计算剩余时间。 但是,当程序到达最后一分钟(即01:00:59)时,它将跳过该分钟并继续进行下一分钟(即00:59:59)。
关于第二个错误:假设我输入1小时1分钟5秒。 它将倒数5秒。 然后,计算机将打印1:00:00。 而不是在该分钟内倒数秒。 它将跳到0:59:59。 希望能有所帮助如果我能得到一些修复这两个错误的帮助,并且可能以不同的方式格式化程序,那将是很棒的。
感谢您的阅读,我们期待您的答复-匿名
import time
time_count = 0
second = int(raw_input("Seconds:"))
count_minute = int(raw_input("Minutes:"))
count_hour = int(raw_input("Hours:"))
time_count += second
time_count += count_minute * 60
time_count += count_hour * 3600
def clean():
global second
global count_minute
global count_hour
print_second = str(second).zfill(2)
print_minute = str(count_minute).zfill(2)
print_hour = str(count_hour).zfill(2)
print "%s:%s:%s" % (print_hour, print_minute, print_second)
time.sleep(1)
clean()
time.sleep(1)
for i in range(1, time_count + 1)[::-1]:
if second == 0 and count_minute == 0 and count_hour == 0:
clean()
break
elif second != 0:
second -= 1
elif second == 0:
count_minute -= 1
second = 59
if count_minute == 0 and count_hour > 0:
clean()
count_hour -= 1
count_minute = 59
clean()
time.sleep(1)
print """
Timer Finished.
"""
代码中的一些问题是,不必要地使用了globals , 直接进行类型检查等。同样,如果您使用更高级别的结构(例如timedelta对象),则代码没有错误的可能性也会更高。 这个更好:
from datetime import timedelta
from time import sleep
while True:
try:
hours, minutes, seconds = input('Enter hours, minutes, seconds (with a comma in between): ')
except (ValueError, TypeError): # other errors
print("Error 1, please ...")
continue
except NameError:
print("Error 2")
continue
else:
print("All good")
break
total = timedelta(hours=hours, minutes=minutes, seconds=seconds)
for passed_seconds in range(int(total.total_seconds())):
print total - timedelta(seconds=passed_seconds)
sleep(1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.