我是一个初学者,所以请原谅我的无知 我想要做的基本上是从用户那里得到一个输入,输入是一个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 = " "
答案 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)
注意:这个循环也将垄断你的处理器的一个核心,但这是另一个故事。