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