我是python的新手,我不知道这是否会起作用

时间:2011-12-05 00:38:14

标签: python

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 

它可以从我所知道的方面发挥作用,但是很难测试这是否会长期发挥作用。

4 个答案:

答案 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()允许脚本几乎精确地触发所需的时间点。

我喜欢它:) - 我有时无法抗拒解决一些奇怪的问题,如果我真的拥有它的方式我将如何解决它......