如何在不按 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 = " "

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)

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

相关内容

最新更新