在python中如何不按enter键从用户处获取一个键

2024-06-25 07:27:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个初学者,请原谅我的无知。
我想做的基本上是从用户那里得到一个输入,它要么是1到9的数字,要么是一个空格。我在浏览这个网站时发现了一些代码,我认为应该有用,但是没有。当我尝试运行它时,它什么都不做,没有错误消息或任何东西。在

import msvcrt
numInput = 0
while numInput == 0 :
    if msvcrt.kbhit():
        if msvcrt.getch() == "1":
            numInput = "1"
        elif (msvcrt.getch() == "2"):
            numInput = "2"
        elif (msvcrt.getch() == "3"):
            numInput = "3"
        elif (msvcrt.getch() == "4"):
            numInput = "4"
        elif (msvcrt.getch() == "5"):
            numInput = "5"
        elif (msvcrt.getch() == "6"):
            numInput = "6"
        elif (msvcrt.getch() == "7"):
            numInput = "7"
        elif (msvcrt.getch() == "8"):
            numInput = "8"
        elif (msvcrt.getch() == "9"):
            numInput = "9"
        elif (msvcrt.getch() == " "):
            numInput = " "

Tags: 代码用户import消息if网站错误数字
1条回答
网友
1楼 · 发布于 2024-06-25 07:27:43

msvcrt.getch()读取密钥。另外,您对numInput值没有任何处理。在

你有:

if msvcrt.getch() == "1":
    numInput = "1"
elif (msvcrt.getch() == "2"):
    numInput = "2"
....

首先msvcrt.getch()读取用msvcrt.kbhit()检测到的密钥。如果是“1”,则它将退出循环。如果没有,它将转到第二个If并阻止,直到您再次按键。按下键后,python将对照“2”进行检查。等等。所以,如果您按1,您的代码将退出循环很好。如果你想用2退出,那么你必须按2两次(因为首先你要检查1)。。。你去拿钻头。试试这个:

^{pr2}$

注意:这个循环也会独占你的进程的一个核心,但那是另一个故事。在

相关问题 更多 >