我在这里遇到了一些问题。我想在所需的时间停止print
命令。我想出了一些代码,它仍然保持循环。这里是代码,
import time
t = time.strftime("%H%M%S")
while ti:
print(time.strftime("%H%M%S"))
time.sleep(1)
if t = ("140000"): #just example of time to stop print
break
由于
答案 0 :(得分:1)
t = time.strftime("%H%M%S")
仅在循环之前执行一次,因此t
的值不会改变。
您的方法是检查时差的最差方法; python的datetime
框架允许减去时间戳,因此,你可以检查时间,因为其他事情很容易发生而不进行任何字符串比较......
答案 1 :(得分:0)
这将有效
import time
t = time.strftime("%H%M%S")
while t:
t = time.strftime("%H%M%S")
print(time.strftime("%H%M%S"))
time.sleep(1)
if t == ("140000"): #just example of time to stop print
break
你的代码中有一些错误
而ti: - >而t:
如果t =(" 140000"): - >如果t = = (" 140000"):
答案 2 :(得分:0)
time.sleep(1)
可能会睡眠时间少于或超过一秒,因此t == "140000"
是不够的。
在给定的当地时间停止循环:
import time
from datetime import datetime
stop_dt = datetime.combine(datetime.now(), datetime.strptime("1400", "%H%M").time())
stop_time = time.mktime(stop_dt.timetuple())
while time.time() < stop_time:
print(time.strftime("%H%M%S"))
time.sleep(max(1, (stop_time - time.time()) // 2))
time.time()
返回“自纪元以来的秒数” - 与字符串比较不同,它适用于午夜。
睡眠间隔是剩余时间的一半或一秒(无论大小)。
如果在本地时间不明确的情况下停止时间是在DST转换结束期间(“回退”),则 time.mktime()
可能会返回错误的结果(在这种情况下,基于字符串的解决方案可能会停止两次)
答案 3 :(得分:-1)
试试这个:
import time
while ti:
t = time.strftime("%H%M%S")
print(time.strftime("%H%M%S"))
time.sleep(1)
if t = ("140000"): #just example of time to stop print
break