簡體   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