繁体   English   中英

如何编写循环以使计时器每两秒运行一次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM