首页 > 解决方案 > Python 3 - 在循环中创建时间定义的用户输入(Windows)

问题描述

我决定在这里问,因为在花了几个小时试图找出我的问题(单独和在线)之后,我没有得到任何结果。

先解释一下我的问题:

我正在尝试编写一个脚本,该脚本会从预定义的列表中随机选取一个单词,随机化该单词中字母的顺序,并向用户显示带有这些随机顺序字母的图片。用户的作用是输入神秘词的第一个字母。到目前为止,我的脚本是成功的并且工作正常,我对此非常满意。但是,当我尝试实现“限时”用户输入时,我遇到了一个相当大的问题。事实上,我希望用户在有限的时间内输入神秘词的第一个字母。如果用户没有输入任何内容,那么程序将打印类似“时间到了!”的内容。并将继续其进程。

我与解决方案最接近的是 Alex Martelli 在这里的回答:How to set time limit on raw_input 但是,该脚本似乎对我不起作用。它肯定会在退出循环之前等待 X 分钟,但如果我输入一些东西,它不会做任何其他事情。我尝试使用 time.time() 并将其存储到变量中并检查每次迭代,我尝试了不同的线程方法但没有成功。我已经阅读了很多帖子,其中大多数都无法帮助我,因为它们适用于 linux 或 Mac(我在 Windows 上)。

我把我当前的脚本放在下面。请记住,为了清楚起见,我只在此处放置了一个选项的脚本,但最终版本中有 5 个。cycle_nb 是一个计算整个循环的变量,如果用户想连续做 5 个问题,那么整个事情会重复 5 次,每次给用户一个定义的时间来回答。

我不知道如何在当前配置中实施限时解决方案。我不是专家,我不知道大量的 Python 模块,我主要是跟上这个项目来尝试和学习,因为我对编程非常感兴趣。因此,我更愿意求助于比我有更好想法的实际专家来解决这个问题,并希望在此过程中向他们学习。

#First half of script that leads to production of an image (plt below) with randomized letters

plt.show()
answer = randomstring_answer
secret_word = randomword
player_answer = input()
option1 = randomstring

    if player_answer == "1":
        if option1 == answer:
            print("Correct!")
            print("The answer was " + secret_word)
            cycle_nb = cycle_nb+1
            plt.close()
        else:
            print("Wrong!")
            print("The answer was " + secret_word)
            cycle_nb = cycle_nb + 1
            plt.close()

#Rest of the script

提前感谢您的时间和帮助!

标签: pythoninputtimed

解决方案


推荐阅读