Python 我正在尝试制作一个类似闹钟的功能应用程序,但它一直在等待
我正在尝试制作一个类似于闹钟的应用程序,在这个应用程序中,我希望在适当的时候列出发生的事情。但我面临一个错误。时间一直在等待上一次,而不是列表中的下一次Python 我正在尝试制作一个类似闹钟的功能应用程序,但它一直在等待,python,arrays,Python,Arrays,我正在尝试制作一个类似于闹钟的应用程序,在这个应用程序中,我希望在适当的时候列出发生的事情。但我面临一个错误。时间一直在等待上一次,而不是列表中的下一次 t1 = dt.time(hour=17,minute=8) t2 = dt.time(hour=18,minute=48) timetable = [t1, t2] for elt in timetable: i_time = elt #i_minute = i.minute while Tr
t1 = dt.time(hour=17,minute=8)
t2 = dt.time(hour=18,minute=48)
timetable = [t1, t2]
for elt in timetable:
i_time = elt
#i_minute = i.minute
while True:
if i_time == dt.datetime.now().time():
#if i_hour == dt.datetime.now().hour and i_minute == dt.datetime.now().minute:
#current_time = tk.Label(text = dt.datetime.now())
#current_time.pack()
#playsound('media/ClassAlarm.mp3')
print("Its time")
break
该功能在t1时工作正常,但如果t1通过且当前时间高于t1,则应转到t2并发出警报。但它一直在等待第二天发生的t1。除非处理t1,否则它不会读取t2
例如,当前时间为1:30,t1为1:25,t2为1:35。它不会在t2响,但会一直等待t1再次发生,而这已经发生了
我尝试以不同的方式执行for循环
for elt in timetable:
time = dt.datetime.now().time()
if time - elt < 0:
break
while(True):
if time == elt:
print("you did it")
我以前试过把问题贴出来,但无法正确解释。希望这有助于使用==运算符比较时间是有风险的,从逻辑上讲它应该是可行的,但无论如何使用更好注意:我相信这些函数生成的时间戳格式不同,虽然它们代表时间并且很有用,但是因为它们的格式不同,所以不能使用相等运算符(Bcz即使对于相同的时间和日期,您的时间戳也会不同,尽管它们表示相同)。要确认此行为,您可以编写t1和datetime的打印变量。现在并查看它们是否相同
关于第二个问题,您可以使用if/else语句来检查发生了什么时间以及最近发生了什么时间,或者您可以反向运行循环并检查计时器(假设延迟计时器在循环的末尾)
示例代码:
英语教学时间表中的。反向()
i_time=elt
尽管如此:
如果我在while True之后计算下一行的时间:你能将比较运算符从==更改为>=并告诉我这是否有帮助吗?它没有帮助。它在不检查时间的情况下打印“它的时间”。哦,我很糟糕,很抱歉将符号更改为我无法特别发现你代码中的任何问题。谢谢你的选项帮助很大。比较运算符有帮助。它只是打印而已g上一个报警,它不应该,只打印下一个报警
current_hour = dt.datetime.now().hour
current_min = dt.datetime.now().minute
alarm = any(i.hour == current_hour and i.minute == current_min for i in timetable)
print(alarm)
for elt in timetable.reverse():
i_time = elt
while True:
if i_time <= dt.datetime.now().time():
print("Its time")
break