2011-12-05 5 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" 
관련 문제