使用 Python msvcrt 时代码出现问题

Problem in code while using Python msvcrt

只得到一个黑屏,怎么回事?

import msvcrt
while(1):
  choice = msvcrt.getch()
  if(choice =='a'):
      print('a')
  elif(choice =='s'):
      print('s')

你的问题是 getch() returns 一个字节而不是一个字符串。如果按 achoice 的值是字节串 b'a',它与字符串 'a' 不同。考虑一下:

>>> choice = b'a'
>>> choice == 'a'
False
>>> choice.decode() == 'a'
True

并且您的屏幕保持空白,因为 if 条件永远不会为真,并且您没有包罗万象的 else: 子句。您可以通过打印出 choice 的值来自己发现这一点。

更改您的测试

if choice =='a':

if choice.decode() == 'a':

(并从你的 if 测试中删除那些不必要的括号)。

在 Python 2 中,您的原始代码将按您预期的方式工作。