Я бы хотел, чтобы моя программа ссылалась на текущее время в Python. Но моя программа продолжает печатать и ссылаться на метку времени. Я использую Python3.5.3.
import time
timenow = time.strftime("%X")
awake = "06:00:00" # turn on the lights at 6am
sleep = "22:00:00" # turn off the lights at 10pm
while True:
print (timenow) # print the current time
if awake <= timenow:
print ("Lights On")
elif timenow >= sleep:
print ("Lights Off")
My current output is...
21:55:46
Lights On
21:55:46
Lights On
21:55:46
Lights On
Это может сработать. Если вы указываете время как часть даты, которая может быть представлена int. Я думаю, что лучше сравнить числа в этом случае, а не строки (как в вашем примере).
import datetime
on = 6
off = 22
while True:
ctime = datetime.datetime.now()
status = 'Lights On' if on < ctime.hour < off else 'Lights Off'
print('{}: {}'.format(ctime.strftime('%X'), status))
Я думаю, вам просто нужно переместить 1 строку в цикл while:
import time
awake = "06:00:00" # turn on the lights at 6am
sleep = "22:00:00" # turn off the lights at 10pm
while True:
timenow = time.strftime("%X") #moved this line into the while loop
print (timenow) # print the current time
if awake <= timenow:
print ("Lights On")
elif timenow >= sleep:
print ("Lights Off")
Результат должен выглядеть следующим образом:
Lights On
08:50:22
Lights On
08:50:23
Lights On
08:50:24
В этом вопросе timenow
устанавливается и никогда не обновляется. Так двигаться, что в while
поток циклы, так что будет создаваться каждый раз. Так же, как и хорошая практика программирования, вы также можете бросить паузу, чтобы она не забивала процессор в цикле. Вы можете поместить это в конец цикла while, и он будет ждать 1 секунду перед повторением цикла:
....
elif timenow >= sleep:
print ("Lights Off")
time.sleep(1)