python中的初学者,如何制作一个打印出剩余时间的计时器,当用户按下并输入任何键时,计时器也会停止。这是我现在的代码:\
import time
keep_going = input("Press any key to stop the timer")
for i in range(3):
print(i + 1),
time.sleep(1)
if keep_going != " ":
break
但它不起作用,因为在询问问题后计时器启动。
答案 0 :(得分:1)
在单线程环境和命令行中无法实现。因为它没有机会来检测'如果按下任何键(没有输入)。
import time
counter = 0
try:
while True:
print(counter + 1)
counter += 1
time.sleep(1)
except KeyboardInterrupt:
print('You\'ve exited the program.')
程序将等到Ctrl+C
键盘中断被按下。
与for循环相同。
import time
try:
for i in range(3):
print(i + 1)
time.sleep(1)
except KeyboardInterrupt:
print('You\'ve exited the program.')
答案 1 :(得分:0)
我会为计时器创建一个单独的线程。在该线程中启动计时器,并等待主线程中的输入。
import time
import threading
def run_timer():
flag = True
for i in range(3):
print(i + 1)
time.sleep(1)
if not flag:
break
timer_thread = threading.Thread(target=run_timer)
timer_thread.daemon = True
timer_thread.start()
在用户输入密钥的主线程中,您应该相应地设置标记。