首页 > 解决方案 > Python 3.5:输入函数不需要回车,只接受一个字符,只有满足给定条件才返回字符

问题描述

我正在设计一个游戏,其中我需要输入功能来接受输入,而无需用户按下回车键。此外,一旦用户输入了单个字符,应该存储输入的变量必须立即包含该字符(就像用户在输入该字符后按下了回车键一样)。只有满足给定条件时,输入的字符才必须显示在屏幕上。请启发我如何实现这一目标。谢谢你。

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

标签: pythonpython-3.x

解决方案


经过搜索,我找到了一个名为 的打包msvcrt,它可以对您的情况有所帮助。有关更多信息,请查看:python 中的 raw_input 而无需按 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() 问题来看,它本质上似乎msvcrt.getch无法在 IDLE 中工作。但是有一个解决方法(调整自:PyCharm: msvcrt.kbhit() and msvcrt.getch() not working?)。如果您使用的是 Spyder,请单击Run-> Configuration per file-> Execute in an external system terminal。当你稍后运行脚本文件时,会跳出一个控制台窗口。


推荐阅读