2011-12-05 31 views
0
import time 
varthing = 1 
while varthing == 1: 
    time.sleep(60) 
    checker = time.strftime("%b, %d", time.localtime()) 
    if checker == "Dec, 25" : 
     print "It's Christmas" 
     raw_input("Enter anything to close\n") 
     varthing = 0 

它從我所知道的,但很難測試,如果這將長期工作。我是新來的蟒蛇,我不知道這是否會工作

+3

更改時鐘,而程序的運行方式。 –

+0

投票結果如何? – zeboidlund

+1

歡迎來到SO。重新發布[你的問題](http://stackoverflow.com/questions/8381192/i-have-no-idea-what-is-wrong-with-this-code)被認爲是有害的。如果你需要包括更多東西,你可以隨時編輯原始問題 – joaquin

回答

2

我認爲它會工作 - 雖然你有聖誕節的一天錯了! :)正如邁克爾所建議的,你可以通過改變你的時鐘來測試(或者使用明天的日期並保留一晚)。

下面是一個有點清潔版本:

import time 
while time.strftime('%b, %d', time.localtime()) != 'Dec, 24': 
    time.sleep(60) 
print "It's Christmas" 
raw_input("Enter anything to close\n") 

另一種方法是計算直到聖誕節早上的秒數,然後只是time.sleep()量。或者,爲了增強對例如改變你的時間,一半的時間,然後重複(注意一旦足夠小的時候停止減半)。

+1

謊言,這是所有的英語國家,一天晚些時候慶祝它。 – millimoose

+0

對不起:)導入時間 varthing = 1 而varthing == 1: time.sleep(60) 方格= time.strftime( 「%B,%d」,time.localtime()) 如果檢查== 「Dec,25」: print「它是聖誕節」 raw_input(「輸入任何內容以關閉\ n」) varthing = 0 – user1080694

+0

對不起,這是一個錯誤,將代碼放在註釋中並不實際。 – user1080694

1

那麼,從概念上說,你的代碼是好的。你最大的錯誤是,聖誕節是(典型值)12月25日儘管如此,這裏有一些事情可以做,使你的代碼有點更簡潔:

import time 
continueLooping = True 
while continueLooping: 
    time.sleep(60) 
    dateChecker = time.strftime("%b, %d", time.localtime()) 
    if dateChecker == "Dec, 25": 
     print "It's Christmas" 
     raw_input("Enter anything to close\n") 
     continueLooping = False 

變化:

  • varthing - >continueLooping:您希望您的變量名稱能夠反映其預期用途。
  • = 1; == 1; = 0 - >= True; ; = False:布林存在的原因。它們使你的代碼更加明確,更易於閱讀。此外,您必須編寫較少的代碼( == 1 )。
  • checker - >dateChecker:您的變量名應具體到它們的使用情況下(只是櫃面你需要檢查別的東西了線)
  • "Dec, 24" - >"Dec, 25":同樣,聖誕節往往是12月25日

否則,它最終很好。 raw_input位似乎沒有太多,但這是一個用戶體驗的事情。

編輯:

看到如何總有一個更小的方式,我會盡量簡潔地嘗試這個(沒有很大的損失清晰度)。

import time 
while time.strftime("%b, %d", time.localtime()) != "Dec, 25": 
    time.sleep(60) 
print "It's Christmas" 

現在我覺得我要把這件事上CodeGolf

+0

是的,12月24日是一個錯誤。 – user1080694

+1

'break'也存在原因。 –

+0

Python通常也會使用像'date_checker'這樣的變量名來代替'dateChecker'。 – Dougal

0
>>> def isChristmas(t): 
...  return t.month == 12 and t.day == 25 
... 
>>> from datetime import datetime 
>>> datetime.today() 
datetime.datetime(2011, 12, 4, 19, 49, 48, 51455) 
>>> isChristmas(datetime.today()) 
False 
0
import datetime 
import time 
T = datetime.datetime(year=2011, month=12, day=25, hour=0, minute=0, second=0) 
interval = 60 
delta = T-datetime.datetime.now() 
while delta > datetime.timedelta(0): 
    print "T minus "+str(delta) 
    if delta.total_seconds() < 60: 
     time.sleep(min(1, delta.total_seconds())) 
    elif delta.total_seconds() < 60+interval: 
     time.sleep(delta.total_seconds()-60) 
    else: 
     time.sleep(interval) 
    delta = T-datetime.datetime.now() 

print str(datetime.datetime.now()) 
raw_input("XMAS!!!") 

隨着自適應休眠,所以你必須在最後剩下分鐘秒明智的倒計時。 min()使腳本幾乎精確地在所需的時間點觸發。

我喜歡它:) - 我有時只是無法抗拒解決一些奇怪的問題,我將如何解決這個問題,如果我真的有它...

相關問題