[英]How can I write a loop to make the timer run every two seconds
我有一个关于如何设置计时器的问题,以便每次退出循环时都会将时间设置回 2 秒。 问题是声音第一次在 2 秒后起作用,下一次立即执行。 非常感谢您的任何建议。
这是我的代码:
time = 2
while time > 0:
timer = datetime.timedelta(seconds=time)
time -= 1
duration = 1000
freq = 440
winsound.Beep(freq, duration)
我不确定您是不是这个意思,但对我来说,您似乎只想等待 2 秒钟,然后再执行下一步。 你可以这样做:
import time
while True:
time.sleep(2) # waits 2 seconds
winsound.Beep(440, 1000)
无论如何,我不建议您使用没有 break 语句的普通无限循环。 因此,我建议您添加一个,如下所示。
import time
while True:
time.sleep(2) # waits 2 seconds
winsound.Beep(440, 1000)
if True: # break on a specific statment
break
编辑:正如 CrazyChucky 在评论中提到的,这种方法在大多数情况下应该可以正常工作,但有时可能会超过两秒。 因此,您应该使用 timedeltas 或查看scheduler 。
为了尽可能准确,请使用:
import time
timer = 0
step = 2
t0 = time.time()
while True:
timer = time.time() - t0
wait = step - timer
time.sleep(wait)
print(time.time())
winsound.Beep(freq, duration)
t0 = time.time()
此脚本计算您计算机的脚本行的执行时间。
您只需要在循环结束时重新初始化时间
time = 2
while True:
timer = datetime.timedelta(seconds=time)
time -= 1
duration = 1000
freq = 440
if time == 0:
time = 2
break
winsound.Beep(freq, duration)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.