我正在尝试在 python 中创建一个代码,根据两个单独数组的时间播放警报。
定时器 1 将发出 1 声蜂鸣声,定时器 2 将发出 2 声蜂鸣声。时代并不排斥,一切都需要基于一个主要时间。
import time
import datetime
import winsound
def sound_alarms(timer_1, timer_2):
alarm = 0
for i in timer_1 and timer_2:
while alarm <= i:
break_timer = datetime.timedelta(seconds = alarm)
print(break_timer, end="\r")
time.sleep(1)
alarm += 1
if alarm == i in timer_1:
winsound.Beep(234, 1500)
if alarm == i in timer_2:
winsound.Beep(234, 500)
winsound.Beep(234, 500)
timer_1 = [10 , 20 , 30]
timer_2 = [15, 25, 35]
sound_alarms(timer_1, timer_2)
问题出在 for 循环中——它造成了令人困惑的行为。实际上,您可以通过一些修改将其完全删除。这段代码在我测试时有效:
import time
import datetime
import winsound
def sound_alarms(timer_1, timer_2):
alarm = 0
maximum_value = max(timer_1+timer_2)
while alarm <= maximum_value:
break_timer = datetime.timedelta(seconds = alarm)
print(break_timer, end="\r")
time.sleep(1)
alarm += 1
if alarm in timer_1:
winsound.Beep(234, 1500)
if alarm in timer_2:
winsound.Beep(234, 500)
winsound.Beep(234, 500)
timer_1 = [10 , 20 , 30]
timer_2 = [15, 25, 35]
sound_alarms(timer_1, timer_2)
我所做的是找到要计数的最大值,并让它每秒检查当前时间是否在任一列表中。