使用 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 一个字节而不是一个字符串。如果按 a
,choice
的值是字节串 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 中,您的原始代码将按您预期的方式工作。
只得到一个黑屏,怎么回事?
import msvcrt
while(1):
choice = msvcrt.getch()
if(choice =='a'):
print('a')
elif(choice =='s'):
print('s')
你的问题是 getch()
returns 一个字节而不是一个字符串。如果按 a
,choice
的值是字节串 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 中,您的原始代码将按您预期的方式工作。