2016-09-27 80 views
-2

我正在使用python 3并尝试创建一个不断运行的脚本,并且在某个时间执行特定的代码。 我到目前为止的代码验证当前分钟数,如果超过给定分钟,它将打印一条消息,否则,它会打印当前分钟并等待5秒钟,然后重试。 问题是它只打印代码开始的分钟。使用python打印循环中的当前分钟

import time 
from datetime import datetime 
now = datetime.now() 
hour = now.hour 
minute = now.minute 
L=1 

while (L == 1): 
    if minute > 39: 
     print ("It's past "+str(hour)+":"+str(minute)) 
     L = 2 
    else: 
     print(str(minute)) 
     time.sleep(5) 
+1

因为只要您打印,您将'L'设置为2,因此while循环为false。另外,你并没有在while循环中重新定义'now',所以它总会有程序启动的时间。 –

回答

1

一些编程指针:

1)要进行不断循环使用下面的结构:

while (True): 
    if (...): 
     .... 
     break 

2)存储在您的“现在”变量是静态的,必须更新时间与内环路的新时间:

while (True): 
    now = datetime.now() 

所以:

while True: 
    now = datetime.now() 
    if now.minute > 39: 
     print "Hour, Minute:", now.hour, now.minute 
     print "All done!" 
     break 
    else: 
     print ""Minute, second:", now.minute, now.second 
    time.sleep(5) 

3)在“现实生活”(TM)计算你想等到你的事件和睡眠时间很长的时间。

now = time.now() 
if now.minute >= 39: 
    minutesToEvent = 0 
else: 
    minutesToEvent = 39 - now.minute 
print "Sleep seconds to next event:", minutesToEvent * 60 
sleep(minutesToEvent * 60) 
0

你必须插入assigments

now = datetime.now() 
hour = now.hour 
minute = now.minute 

while循环中,或者他们会不会被刷新

0

您需要刷新的每一步now变量的值循环。此外,我删除了无用的变量L,并用while True代替它,以使代码更好。

import time 
from datetime import datetime 

while True: 
    now = datetime.now() 
    if now.minute > 39: 
     print ("It's past "+str(hour)+":"+str(minute)) 
     # Run your desired code here. 
    else: 
     print(str(minute)) 
     time.sleep(5)