Python 在定义的时间之间执行while循环
我试图只在这样一个定义的时间下执行while循环,但是while循环即使在超出定义的限制时也会继续执行:Python 在定义的时间之间执行while循环,python,Python,我试图只在这样一个定义的时间下执行while循环,但是while循环即使在超出定义的限制时也会继续执行: import datetime import time now = datetime.datetime.now() minute = now.minute while minute < 46 : print "test" time.sleep(5) minute = now.minute 导入日期时间 导入时间 now=datetime.datetime
import datetime
import time
now = datetime.datetime.now()
minute = now.minute
while minute < 46 :
print "test"
time.sleep(5)
minute = now.minute
导入日期时间
导入时间
now=datetime.datetime.now()
分钟=现在
分钟<46时:
打印“测试”
时间。睡眠(5)
分钟=现在
一旦我们越过极限,如何停止循环
谢谢您需要在循环中重新确定时间。
minute
变量是静态的,它不会更新以反映不断变化的时间
如果要循环一定时间,请改为从time.time()
开始,然后计算经过的时间:
import time
start = time.time()
while time.time() - start < 300:
print 'test'
time.sleep(5)
再次注意,循环每次都需要调用一个方法来确定当前时间。您没有正确地更新while循环中
minute
的值。您应该在循环中重新计算now
的值,然后将新的now.minute
分配给minute
while minute < 46 :
print "test"
time.sleep(5)
now = datetime.datetime.now()
minute = now.minute
分钟<46时:
打印“测试”
时间。睡眠(5)
now=datetime.datetime.now()
分钟=现在
您正在now
变量中存储当前时间。相反,每次都应该获取循环中的当前时间:
import datetime
import time
minute = datetime.datetime.now().minute
while minute < 46 :
print "test"
time.sleep(5)
minute = datetime.datetime.now().minute
导入日期时间
导入时间
分钟=datetime.datetime.now().minute
分钟<46时:
打印“测试”
时间。睡眠(5)
分钟=datetime.datetime.now().minute
循环的命题应该是datetime.datetime.now().minute-minute<46
,循环体不应该更新minute
现在是在之外定义的,而将是一个常量。
while minute < 46 :
print "test"
time.sleep(5)
now = datetime.datetime.now()
minute = now.minute