Python定时输出代码异常求助:时间变更后输出未更新
问题分析与解决
你代码的核心问题在于**dt_now的初始化位置错误**——你把dt_now = datetime.datetime.now()写在了while循环外面,这意味着这个变量只会在程序启动时获取一次当前时间,之后循环里反复判断的都是这个固定不变的旧时间。哪怕时间走到14:04,代码里用的还是之前14:03的时间值,所以会一直输出“1”。
解决方法很直接:把获取当前时间的语句移到循环内部,让每次循环都重新获取最新的时间:
import datetime from time import sleep while True: sleep(1) # 每次循环都重新获取当前时间,确保判断的是最新时刻 dt_now = datetime.datetime.now() if dt_now.hour == 14 and dt_now.minute == 3: print("1") sleep(10) continue if dt_now.hour == 14 and dt_now.minute == 5: print("2") sleep(10) else: print("3")
额外可以优化的小细节:
- 可以改用
dt_now = datetime.datetime.now().time()只提取时间部分,让判断逻辑更聚焦(不过原逻辑也能正常运行) - 连续的
sleep可以根据实际需求调整,避免不必要的等待,但不影响核心功能
内容的提问来源于stack exchange,提问作者チルアイス
相关产品推荐
相关产品推荐

