我正在尝试制作一个计时器,一旦输入任何分钟数,窗口将以mm:ss格式倒计时。但是,当输入超过10分钟的时间时,在10分钟以上的任何时间开始时分钟数低于10分钟时,计时器结束时会出现额外的零点。我似乎无法弄清楚如何摆脱它,并希望另一组眼睛看看我是否犯了任何愚蠢的错误。
import time, sys, os
os.system("cls")
def countdown_screen(endtime):
sectot=int(endtime)*60
print("*******************************************************************************")
for i in range(0,sectot):
mins=(int(sectot)/60)
secs=sectot-(mins*60)
if secs<10:
secs="0"+str(secs)
if mins==10 and secs==0:
secs=secs-"0"
sys.stdout.write("\rSystem standby for: %s:%s" %(mins,secs))
sys.stdout.flush()
time.sleep(1)
sectot=sectot-1
sys.stdout.write("\rSystem standby complete.")
print""
endtime=raw_input("mins:")
countdown_screen(endtime)
答案 0 :(得分:1)
您正在将secs
重载为int然后是字符串,这肯定是个问题:
if secs<10:
secs="0"+str(secs)
if mins==10 and secs==0:
secs=secs-"0"
但是你应该简化你的整个方法,让字符串格式化为你做的工作:
import time, sys, os
os.system("cls")
def countdown_screen(endtime):
sectot=int(endtime)*60
print("*******************************************************************************")
for i in range(0,sectot):
sys.stdout.write("\rSystem standby for: %02d:%02d" % (sectot/60,sectot%60))
sys.stdout.flush()
time.sleep(1)
sectot=sectot-1
sys.stdout.write("\rSystem standby complete.")
print""
endtime=raw_input("mins:")
countdown_screen(endtime)