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
它可以从我所知道的方面发挥作用,但是很难测试这是否会长期发挥作用。
答案 0 :(得分: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()
这个数量。或者,为了增强对例如改变你的时钟时间,time.sleep()
一半的时间然后重复(一旦它变得足够小就注意停止减半)。
答案 1 :(得分: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上。
答案 2 :(得分: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
答案 3 :(得分: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()允许脚本几乎精确地触发所需的时间点。
我喜欢它:) - 我有时无法抗拒解决一些奇怪的问题,如果我真的拥有它的方式我将如何解决它......