我想编写一个名为boom(h,m,s)
的函数,在从main开始输入后,以 HH:MM:SS 格式打印倒计时时钟,然后打印“boom”。
我不允许使用除time.sleep()之外的现有模块,所以我必须基于While \ For循环。
import time
def boom(h,m,s):
while h>0:
while m>0:
while s>0:
print ("%d:%d:%d"%(h,m,s))
time.sleep(1)
s-=1
print ("%d:%d:%d"%(h,m,s))
time.sleep(1)
s=59
m-=1
print ("%d:%d:%d"%(h,m,s))
time.sleep(1)
s=59
m=59
h-=1
while h==0:
while m==0:
while s>0:
print ("%d:%d:%d"%(h,m,s))
time.sleep(1)
s-=1
print ("BooM!!")
我想到了如何计算秒部分,但是当我在H和M参数上输入零时,它正在弄乱时钟。
答案 0 :(得分:1)
问题在于:
while h==0:
while m==0:
while s>0:
如果m == 0
和s == 0
while循环没有中断,那么就会出现无限循环。
只需在(最后和最)最内容while
中添加一个else子句,如下所示:
while s>0:
...
else: # executed once the above condition is False.
print ('BooM!!')
return # no need to break out of all the whiles!!
答案 1 :(得分:0)
将它全部转换为秒并在打印时将其转换回来...
def hmsToSecs(h,m,s):
return h*3600 + m*60 + s
def secsToHms(secs):
hours = secs//3600
secs -= hours*3600
mins = secs//60
secs -= mins*60
return hours,mins,secs
def countdown(h,m,s):
seconds = hmsToSecs(h,m,s)
while seconds > 0:
print "%02d:%02d:%02d"%secsToHms(seconds)
seconds -= 1
sleep(1)
print "Done!"