Python 3.5:输入函数不需要回车,仅接受一个字符,并且仅在满足给定条件时返回字符

时间:2019-01-13 13:17:31

标签: python python-3.x

我正在设计一个游戏,在该游戏中,我需要输入功能来接受输入,而无需用户按下Enter键。 此外,一旦用户输入一个字符,则应该在其中存储输入内容的变量必须立即包含该字符(就像用户在输入该字符后按下回车键一样)。输入的字符必须满足指定条件才可以在屏幕上显示。请告诉我如何实现此目的。谢谢。

注意:我是Python的初学者,因此请不要研究超出我理解范围的事情。我的老师禁止我们在项目中使用类。 我应该能够利用屏幕上显示的字符,使用针对其他类似问题的解决方案,我无法找到这些字符。

1 个答案:

答案 0 :(得分:1)

搜索后,我发现了一个名为msvcrt的打包文件,它对您的情况有帮助。 有关更多信息,请检查:raw_input in python without pressing enter

以下是一个简单的示例(在Windows中有效)。您应该打开命令行并使用python xxx.py执行以下程序。

import msvcrt
import sys

while True:
    c = msvcrt.getch()
    if c == b'\x03': # Ctrl-C
        sys.exit()
    #print(type(c)) # bytes

    #convert from bytes to str
    c = c.decode('utf-8')

    if c =='a': #replace 'a' with whatever you want
        print(c)

它从msvcrt.getch()输入单个字符,并将其分配给变量c

如果字符串格式等于'a',它将打印该字符。

如果要退出该程序,只需按Ctrl-C

编辑:

Python kbhit() problems看来,msvcrt.getch本质上无法在IDLE中工作。但是有一种解决方法(从PyCharm: msvcrt.kbhit() and msvcrt.getch() not working?调整)。如果使用的是Spyder,请单击Run-> Configuration per file-> Execute in an external system terminal。然后,当您稍后运行脚本文件时,控制台窗口将跳出。