如何从用户那里获得单个密钥而无需在python中输入

时间:2017-07-06 20:04:13

标签: python input msvcrt

我是一个初学者,所以请原谅我的无知 我想要做的基本上是从用户那里得到一个输入,输入是一个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 = " "

1 个答案:

答案 0 :(得分:1)

msvcrt.getch() READS键。此外,您对numInput值没有任何帮助。

你有:

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

首先msvcrt.getch()会读取您使用msvcrt.kbhit()检测到的密钥。如果它的' 1'然后它将退出循环。如果没有,它将转到第二个if和BLOCKS,直到你再次按下键。按下键后,python将对照' 2'进行检查。等等。因此,如果您按1,您的代码将退出循环就好了。如果你想以2退出,那么你必须按两次2(因为首先检查1)...你得到了演练。试试这个:

while numInput == 0 :
    if msvcrt.kbhit():
        v = msvcrt.getch()
        if v == "1":
            numInput = "1"
        ...
print(numInput)

注意:这个循环也将垄断你的处理器的一个核心,但这是另一个故事。