import msvcrt
while True:
try:
a=msvcrt.getch()
a=a.decode('utf-8')
print(a)
except:
print(a)
Приведенный выше фрагмент кода дает неожиданные результаты, когда я ввожу клавиши со стрелками или страницу вверх / страницу вниз / удаление и т. Д.
The output is as follows:
[I/P=a]
a #expected result
[I/P=UP ARROW]
b'\xe0'
H #unexpected result
Я понимаю, что b '\ xe0' печатается, нопочему H
печатается вместе с ним?H не печатается, когда я делаю это:
import msvcrt
a=msvcrt.getch()
print(a)#b'\xe0'
a=a.decode('utf-8')
print(a)
When I input UP ARROW here, it raises a UNICODEDECODERROR.
Я смотрел на другой вопрос, который объясняет, как работает msvcrt.getch (), но все равно не объясняет, почему я получаю два символа в первомкусок кода и только один символ во втором куске кода. Вместо ожидания ввода следующего символа, почему предполагается, что значение b'H '?