2016-09-27 58 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)