这是我写的一个简单的番茄钟计时器。从理论上讲,它将无限地运行,在时间间隔25分钟和5分钟之间交替。
import time
import sys
import datetime
import winsound
def ring(sound):
winsound.PlaySound('%s.wav' % sound, winsound.SND_FILENAME)
times = 0
while True:
tomato = 0
while tomato <= 1500:
timeLeft = 1500 - tomato
formatted = str(datetime.timedelta(seconds=timeLeft))
sys.stdout.write('\r'+ formatted)
time.sleep( 1 )
tomato += 1
ring("MetalGong")
fun = 0
while fun <= 300:
funTimeleft = 300 - fun
funFormatted = str(datetime.timedelta(seconds=funTimeleft))
sys.stdout.write('\r'+ funFormatted)
time.sleep( 1 )
fun +=1
ring("AirHorn")
times += 1
print("You have completed" + times + "Pomodoros.")
但是,它只通过了一次;一旦完成5分钟的阻止,控制台窗口关闭(我通过双击直接运行它,而不是通过终端)。
为什么会这样关闭?它与我使用while True:
的方式有关吗?
谢谢!
evamvid
答案 0 :(得分:1)
将来尝试从控制台运行它,以便在发生异常时看到它生成的回溯。
print("You have completed" + times + "Pomodoros.")
您无法隐式连接int
和字符串。这会抛出一个TypeError
,从而结束你的程序。
修复:
print("You have completed " + str(times) + " Pomodoros.") # this works, and is ugly
print("You have completed {} Pomodoros.".format(times)) # better.