如何给用户一定的时间,让用户在超时后立即回复并打印消息? (Python)
How to give the user certain amount of time to answer and print a message as soon as the time expires? (Python)
我尝试过使用多线程来限制用户的输入时间,但是这段代码似乎不起作用。
# giving the user less than 5 seconds to enter a number
import time
from threading import Thread
def ask():
start_time = time.time()
a = float(input("Enter a number:\n"))
time.sleep(0.001)
def timing():
if time.time() - start_time > 5:
print("Time's Up")
quit()
time.sleep(0.001)
t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
t1.join()
t2.join()
您需要将计时功能设置为无限模式。因为它 运行 只有一次。
试试下面的代码:
import time
import os
from threading import Thread
start_time = time.time()
a = None
def ask():
global start_time
start_time = time.time()
global a
a = float(input("Enter a number:\n"))
time.sleep(0.001)
def timing():
while True:
global a
if a is not None:
break
if time.time() - start_time > 5:
print("Time's Up")
os._exit(1)
time.sleep(0.001)
t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
t1.join()
t2.join()
我不喜欢全局变量,但以下代码似乎可以满足您的需要:
import time
from threading import Thread
import sys
start_time = 0
timeUp = False
def ask():
global start_time, timeUp
start_time = time.time()
a = float(input("Enter a number:\n"))
time.sleep(0.001)
if a and (not timeUp):
print('This is a: ', a)
def timing():
global timeUp
while True:
if time.time() - start_time > 5:
print("Time's Up")
timeUp = True
sys.exit()
time.sleep(0.001)
t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
t1.join()
t2.join()
我尝试过使用多线程来限制用户的输入时间,但是这段代码似乎不起作用。
# giving the user less than 5 seconds to enter a number
import time
from threading import Thread
def ask():
start_time = time.time()
a = float(input("Enter a number:\n"))
time.sleep(0.001)
def timing():
if time.time() - start_time > 5:
print("Time's Up")
quit()
time.sleep(0.001)
t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
t1.join()
t2.join()
您需要将计时功能设置为无限模式。因为它 运行 只有一次。
试试下面的代码:
import time
import os
from threading import Thread
start_time = time.time()
a = None
def ask():
global start_time
start_time = time.time()
global a
a = float(input("Enter a number:\n"))
time.sleep(0.001)
def timing():
while True:
global a
if a is not None:
break
if time.time() - start_time > 5:
print("Time's Up")
os._exit(1)
time.sleep(0.001)
t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
t1.join()
t2.join()
我不喜欢全局变量,但以下代码似乎可以满足您的需要:
import time
from threading import Thread
import sys
start_time = 0
timeUp = False
def ask():
global start_time, timeUp
start_time = time.time()
a = float(input("Enter a number:\n"))
time.sleep(0.001)
if a and (not timeUp):
print('This is a: ', a)
def timing():
global timeUp
while True:
if time.time() - start_time > 5:
print("Time's Up")
timeUp = True
sys.exit()
time.sleep(0.001)
t1 = Thread(target=ask)
t2 = Thread(target=timing)
t1.start()
t2.start()
t1.join()
t2.join()