2011-12-05 13 views
-1

可能性の重複:
I'm new to python, I can't tell if this will work or not私はこのコードで何が間違っているのか分かりません。

import time 
from sys import stdout 
varthing = 1 
while varthing == 1: 
    time.sleep(1) 
    checker = time.strftime("\r%b, %d %H:%M:%S", time.localtime()) 
    print checker, 
    stdout.flush() 
    if checker == "Dec, 25 00:00:00" : 
     print "It's Christmas" 
     raw_input("Enter anything to close\n") 
     varthing = 0 

私が間違って何も表示されません。クリスマスの時にあなたに知らせる時計です。

+1

を何が起こることを期待し、何を代わりに起こるのですか? –

+0

何も起こらない、ちょうどカウントし、指定された日付に達すると何も起こらない。 – user1080694

答えて

5
  • strftimeフォーマットは、\rで始まります。どうして? ifステートメントでテストする文字列は、\rで始まらないため一致しません。

  • time.sleep(1)は、1秒間正確にスリープ状態になることは保証されていません。それは長く眠るかもしれませんし、checkerがあなたがテストしている文字列と一致する1秒のウィンドウを見逃してしまいます。

+0

これを行うには良い方法はありますか? – user1080694

+2

+1 - 1秒間のウィンドウで、時間を含まない別のフォーマットの日付文字列をテストすることをお勧めします。 – Steve314

+0

'sleep(0.5)'も動作する可能性があります。 – 9000

0

あなたは毎秒プリントを必要としない場合、これはトリックを行います:

import datetime, time 
target_date = datetime.datetime(2011, 12, 25) 
time_left = target_date - datetime.datetime.now() 
time.sleep(time_left.total_seconds()) 
print "It's Christmas" 
関連する問題