2011-12-05 83 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)不能保证睡一秒钟。它可能会延长睡眠时间,您会错过checker与您测试的字符串匹配的一秒钟窗口。

+0

有没有更好的方法来做到这一点? – user1080694

+2

+1 - 在一秒钟窗口的事情上,我的建议是测试一个单独格式的日期字符串,不包括时间。 – Steve314

+0

'睡(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"