【问题标题】:Set default value for input-function after timeout in python在python中超时后设置输入函数的默认值
【发布时间】:2022-01-14 09:41:52
【问题描述】:

我在互联网上搜索了很长时间,但在 Windows 10 上的 Pyhton 3.6 中找不到我的问题的正确答案。

在开始时,程序应该询问用户是否愿意回答“是 [y] 还是否 [n]?”这个问题。当用户回答“y”或“n”时,一切都很好。

问题是这样的: 5 秒后,输入功能应终止,如果没有任何响应,则应设置默认值(即“n”),程序应自动继续运行。不幸的是,当我按下“回车”时,它只是继续运行。

我现在的代码如下:

from threading import Timer

answer = "n"
timeout = 5
t = Timer(timeout, print, ['\nDefault setting: MA = n'])
t.start()
prompt = "Yes [y] or No [n]?: "
user_input = input(prompt)
t.cancel()

if user_input == "n" or user_input == "y":
    answer = user_input

if answer == "n":
    print("Answer is n")
else:
    print("Answer is y")

【问题讨论】:

  • 这能回答你的问题吗? Keyboard input with timeout?
  • 我也检查了这个答案。它在 Windows 上不起作用。
  • 您是否尝试过其他答案,例如 stackoverflow.com/a/41812246/16841774
  • 是的,我也试过了……还是不行。经过长时间的搜索,我找到了一个有效的代码!这是其他人的链接:pypi.org/project/pytimedinput 唯一的一点是您必须在cmd中运行代码...问题可以关闭。还是我应该这样做?
  • 你可以用你找到的项目和它的局限性来回答你的问题,并接受你自己的答案。或者,如果您认为这对将来没有任何帮助,您可以删除您的问题。

标签: python input pycharm


【解决方案1】:

这个例子帮助了我:

from pytimedinput import timedInput
userText, timedOut = timedInput("Please, do enter something: ")
if(timedOut):
   print("Timed out when waiting for input.")
   print(f"User-input so far: '{userText}'")
else:
   print(f"User-input: '{userText}'")

https://pypi.org/project/pytimedinput/

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多