我正在设计一个游戏,在该游戏中,我需要输入功能来接受输入,而无需用户按下Enter键。 此外,一旦用户输入一个字符,则应该在其中存储输入内容的变量必须立即包含该字符(就像用户在输入该字符后按下回车键一样)。输入的字符必须满足指定条件才可以在屏幕上显示。请告诉我如何实现此目的。谢谢。
注意:我是Python的初学者,因此请不要研究超出我理解范围的事情。我的老师禁止我们在项目中使用类。 我应该能够利用屏幕上显示的字符,使用针对其他类似问题的解决方案,我无法找到这些字符。
答案 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
。然后,当您稍后运行脚本文件时,控制台窗口将跳出。