Проблема в коде при использовании Python msvcrt - PullRequest
2 голосов
/ 22 марта 2020

Только получение пустого экрана, что не так?

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

1 Ответ

2 голосов
/ 22 марта 2020

Ваша проблема в том, что getch() возвращает байт, а не строку. Если вы нажмете 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 ваш исходный код работал бы так, как вы ожидаете.

...