如何在python中提出要约/问题,例如
import time
print("Hey there man.")
test = input()
if test == "Hey" or test == "Hi":
print("Hey there dude.")
elif test == "Go away" or test == "Bye":
print("Cya dude.")
我如何提出此优惠说我不知道最后10秒才会忽略if和elif语句并打印一些全新的内容,如同类似的内容...
import time
print("Hey there.")
test = input()
if test == "Hey" or test == "Hi":
print("Hey there dude.")
elif test == "Go away" or test == "Bye":
print("Cya dude.")
else time.sleep == >5:
print("Nah your time has expired I'm out anyways.")
答案 0 :(得分:3)
编辑#2
抓好一切。我认真地过分复杂了这个问题。 Sci Prog刚刚发布了一个更简单的解决方案。虽然我会改变一些类似的东西。
import time
expires_in = 5 #in seconds
start = time.time()
test = input("Hey there.\n") #\n is a newline character
end = time.time()
if end - start > expires_in:
print("Nah your time has expired I'm out anyways.")
elif test == "Hey" or test == "Hi":
print("Hey there dude.")
elif test == "Go away" or test == "Bye":
print("Cya dude.")
原始答案
这种伎俩。如果用户响应的时间超过了超时时间,那么当他们开始输入输入时,我会打印出一条消息,说明它花了很长时间。
但是,因为输入命令会暂停脚本的执行,直到我们从用户那里得到一些输入,否则我们不能轻易插入消息,直到他们输入内容为止。有两种方法可以解决这个问题。 1)我们使用一些较低级别的函数而不是使用输入,我们直接使用sys.stdout。 2)我们多线程脚本。这两种方法都很复杂,可能比你想要的更多工作。
import time
def get_input():
start_time = time.time()
expires_in = 5 #in seconds
got = ""
while (time.time() - start_time < expires_in):
if got:
print("you entered", got)
return got
got = input("enter something: ")
print("You took to long")
修改强> OP问了一个更好地遵循他想要完成的事情的例子,所以在这里。我也在代码之后添加了一个解释。
import time
print("Hey there.")
def get_input():
start_time = time.time()
expires_in = 5 #in seconds
user_input = ""
while (time.time() - start_time < expires_in): #keep looping if the time limit has not expired
if user_input:
return user_input
user_input = input()
print("Nah your time has expired I'm out anyways.")
test = get_input()
if test == "Hey" or test == "Hi":
print("Hey there dude.")
elif test == "Go away" or test == "Bye":
print("Cya dude.")
time.time()会抓住当前时间。 (作为一个代表自公元前0年以来的秒数的大讨厌数字返回)。
一旦我们进入while循环,我们还没有任何用户输入,所以我们可以直接跳到输入语句。然后,根据用户的速度有多快,我们可以得到两个结果。
a)用户及时回应。在这种情况下,我们再次执行while循环。这次我们输入if user_input:
if子句,我们立即返回用户输入的内容
b)用户没有及时回复。在这种情况下,我们不会重新执行while循环,因此我们将继续使用print("Nah your time has expired I'm out anyways.")
print语句。
我想指出,我们将输入语句放在我们所做的位置非常重要。如果我们在用户使用后检查用户输入,我们最终会遇到以下情况:问题过期,但用户仍然给我们一些输入。我们看到用户给了我们一些输入,所以我们返回输入。然后我们永远不会有机会告诉用户时间已过期。
您也可以实施一个不错的小技巧。您可以使用input().lower()
代替input()
来使输入不区分大小写。然后,您必须将if语句更改为小写。然后用户可以输入Hey
或hey
或类似hEy
的奇怪内容,如果他们真的想要的话。
答案 1 :(得分:3)
您可以使用datetime
个对象(来自具有相同名称的模块)。计算差异会得到timedelta
个对象。
最后,您必须在检查答案之前测试延迟。
from datetime import datetime
print("Hey there.")
dt1 = datetime.now()
test = input()
dt2 = datetime.now()
difference = dt2 - dt1 # this is a timedelta
if difference.seconds > 10 or difference.days > 0:
print("Nah your time has expired I'm out anyways.")
elif test == "Hey" or test == "Hi":
print("Hey there dude.")
elif test == "Go away" or test == "Bye":
print("Cya dude.")
(在你的问题中指定的python 3中运行)
当然,.days
部分可以省略,因为人们不太可能等待那么久:)