现在代码循环时没有更新时间

2024-10-03 02:43:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做一个循环,不断检查时间是否在2次之间。。所以它打开了我的灯。但是当它循环时,当前时间不会得到更新。我正在尝试创建一个水族馆控制器,可以在不同的时间打开3组灯。你知道吗

感谢您的帮助:)

from  datetime import datetime, time
now = datetime.now()
now_time = now.time()
SleepTimeL = 2

if now_time >= time (9,30) and now_time <= time (16,15):
    print "yes, within the interval"
    print now_time
    time.sleep( 9 )

else:
    print "no"

Tags: andfromimportdatetimeiftime时间控制器
2条回答

如果你想做一个循环,你应该使用一个,比如while。你知道吗

from  datetime import datetime, time
now = datetime.now()
now_time = now.time()
SleepTimeL = 2
print time(19,30)
print now_time
while True:
    if now_time >= time (9,30) and now_time <= time (16,15):
        print "yes, within the interval"
        print now_time
        time.sleep( 9 )
    else: print "no"

如果要制作水族箱控制器,应在每次迭代中检查灯光状态:

from  datetime import datetime, time
now = datetime.now()
now_time = now.time()
SleepTimeL = 2
print time(19,30)
print now_time
while True:
    if now_time >= time (9,30) and now_time <= time (16,15):
        if isLightOff: lightOn 
        time.sleep( 9 )
    else: if isLightOn: lightOff

您需要不断更新循环中的now_time

while True:
    if time (9,30) <= now_time <= time (16,15):
        print "yes, within the interval"
        now_time = datetime.now().time()
        print now_time
        time.sleep( 9 )
    else:
        print "no"

可以用chained comparison替换条件,这样可读性更好。你知道吗

您还可以将比较设置为while上的条件,在这种情况下,循环仅在指定的持续时间内运行,并且需要在持续时间的周期内重新启动:

while time (9,30) <= now_time <= time (16,15):
    print "yes, within the interval"
    now_time = datetime.now().time()
    print now_time
    time.sleep( 9 )

相关问题 更多 >