I';我是python新手,我会';我不知道这是否有效

I';我是python新手,我会';我不知道这是否有效,python,Python,据我所知,它是有效的,但很难测试它是否能长期有效。我认为它会有效——尽管你把圣诞节的日子搞错了!:)正如Michael所建议的,您可以通过更改时钟(或者使用明天的日期并将其保留一夜)来进行测试 这里有一个更简洁的版本: import time varthing = 1 while varthing == 1: time.sleep(60) checker = time.strftime("%b, %d", time.localtime()) if checker == "

据我所知,它是有效的,但很难测试它是否能长期有效。

我认为它会有效——尽管你把圣诞节的日子搞错了!:)正如Michael所建议的,您可以通过更改时钟(或者使用明天的日期并将其保留一夜)来进行测试

这里有一个更简洁的版本:

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 
另一种方法是计算圣诞节早晨之前的秒数,然后计算这个数。或者,为了增强鲁棒性,例如更改时钟时间,
time.sleep()
将时间减半,然后重复(一旦减半足够小,请小心停止减半)。

我认为它会起作用——尽管你把圣诞节的日子搞错了!:)正如Michael所建议的,您可以通过更改时钟(或者使用明天的日期并将其保留一夜)来进行测试

这里有一个更简洁的版本:

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 

另一种方法是计算圣诞节早晨之前的秒数,然后计算这个数。或者,为了增强鲁棒性,例如更改时钟时间,
time.sleep()
将时间减半,然后重复(注意在减半足够小时停止减半)。

好的,从概念上讲,您的代码是可以的。你最大的错误是圣诞节通常是12月25日。不过,您可以做以下几件事,使代码更加简洁:

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")
变化:

  • varthing
    ->
    continueLooping
    :您希望变量名称反映其预期用途
  • =1;==1; = 0
    ->
    =True;;=False
    :布尔值的存在是有原因的。它们使您的代码更明确,更易于阅读。此外,您必须编写更少的代码(
    ==1
  • checker
    ->
    dateChecker
    :您的变量名应该特定于它们的用例(以防您需要检查其他内容)
  • “12月24日”
    ->
    “12月25日”
    :同样,圣诞节通常是12月25日
否则,它最终是好的。
raw\u输入
位似乎没有什么作用,但这是一个用户体验(UX)功能

编辑:

考虑到总是有一种更小的方式,我将尽可能简洁地尝试这种方式(不会对易读性造成太大损失)


现在我想我要把它放在上面。

好吧,从概念上讲,你的代码还可以。你最大的错误是圣诞节通常是12月25日。不过,您可以做以下几件事,使代码更加简洁:

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")
变化:

  • varthing
    ->
    continueLooping
    :您希望变量名称反映其预期用途
  • =1;==1; = 0
    ->
    =True;;=False
    :布尔值的存在是有原因的。它们使您的代码更明确,更易于阅读。此外,您必须编写更少的代码(
    ==1
  • checker
    ->
    dateChecker
    :您的变量名应该特定于它们的用例(以防您需要检查其他内容)
  • “12月24日”
    ->
    “12月25日”
    :同样,圣诞节通常是12月25日
否则,它最终是好的。
raw\u输入
位似乎没有什么作用,但这是一个用户体验(UX)功能

编辑:

考虑到总是有一种更小的方式,我将尽可能简洁地尝试这种方式(不会对易读性造成太大损失)

现在我想我要把它挂上。

import datetime
导入时间
T=datetime.datetime(年=2011,月=12,日=25,小时=0,分钟=0,秒=0)
间隔=60
delta=T-datetime.datetime.now()
而增量>日期时间。时间增量(0):
打印“T减”+str(增量)
如果delta.total_seconds()小于60:
睡眠时间(分钟(1,delta.total_seconds())
elif delta.总_秒()<60+间隔:
睡眠时间(增量总秒数()-60)
其他:
睡眠时间(间隔)
delta=T-datetime.datetime.now()
打印str(datetime.datetime.now())
原始输入(“圣诞节!!!”)
通过自适应睡眠,您可以在最后一分钟内进行秒级倒计时。 min()允许脚本几乎精确地在所需的时间点触发

我喜欢它:)-有时我忍不住要解决一些奇怪的问题,就像我真的拥有它时该如何解决一样…

import datetime
导入时间
T=datetime.datetime(年=2011,月=12,日=25,小时=0,分钟=0,秒=0)
间隔=60
delta=T-datetime.datetime.now()
而增量>日期时间。时间增量(0):
打印“T减”+str(增量)
如果delta.total_seconds()小于60:
睡眠时间(分钟(1,delta.total_seconds())
elif delta.总_秒()<60+间隔:
睡眠时间(增量总秒数()-60)
其他:
睡眠时间(间隔)
delta=T-datetime.datetime.now()
打印str(datetime.datetime.now())
原始输入(“圣诞节!!!”)
通过自适应睡眠,您可以在最后一分钟内进行秒级倒计时。 min()允许脚本几乎精确地在所需的时间点触发


我喜欢:)-有时我忍不住要解决一些奇怪的问题,如果我真的有它,我会如何解决它…

在程序运行时更改时钟。欢迎使用SO。在SO中,重新发布被认为是有害的。如果您需要包含更多内容,您可以随时编辑原始问题在程序运行时更改时钟。欢迎使用SO。在SO中,重新发布被认为是有害的。如果您需要包含更多内容,您可以随时编辑原始问题,所有英语国家都会晚一天庆祝。抱歉:)导入时间varthing=1,而varthing=1:time.sleep(60)checker=time.strftime(“%b,%d”,time.localtime())如果checker==“12月25日”:打印“it's Christmas”原始输入(“输入任何要关闭的内容”)varthing=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
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!!!")