为什么这个脚本不循环/只运行一次?

时间:2014-03-13 05:32:14

标签: python loops python-2.7 while-loop

这是我写的一个简单的番茄钟计时器。从理论上讲,它将无限地运行,在时间间隔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

1 个答案:

答案 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.