Wejście niebuforowane dla Pythona na komputerze z systemem Windows

Co próbuję zrobić

Próbuję zaprojektować stoper z czasem okrążenia. Gdy naciśniesz „L”, okrążenie jest zakończone i gdy naciśniesz „S”, wszystkie okrążenia są zakończone, a czasy są wyświetlane w kolejności.

Będąc w C ++, mogę to zrobić za pomocą funkcji _getch () z conio.h i byłoby to całkiem łatwe. Chcę napisać ten program w Pythonie, ponieważ byłoby to dużo łatwiejsze, a obsługa czasu w C ++ okazała się trudna.

Nadal napisałem program (dla synchronizacji kostki) na tym linku:Zegar kostki

Problem

Nie ma takiej funkcji jak _getch (). Jest to problem, ponieważ na końcu okrążenia nie można nacisnąć klawisza i klawisza Enter, ponieważ byłoby to czasochłonne i irytujące dla użytkownika.

rzeczy, które czytam

Czytałem o bibliotece curses, ale nie ma ona żadnego portu Windows.

Wypróbowałem program, który miał działać zgodnie ze stroną internetową. To było z linku

Link do przepisu getch

Ale to nie zadziałało.

Co próbowałem:

msvcrt.getch()
    >>> import msvcrt
    >>> msvcrt.getch()
    '\xff'

Uważam, że FF jest szesnastkowym odpowiednikiem 255.

Nie rozumiałem, dlaczego tak się dzieje.

readch() jak sugggested in @martineau

importuj msvcrt

def readch (echo = True): „Uzyskaj pojedynczy znak w systemie Windows”. while msvcrt.kbhit (): # usuń bufor klawiatury msvcrt.getch () ch = msvcrt.getch () podczas ch w '0000e0 ': # strzałka lub prefiks klawisza funkcyjnego? msvcrt.getch () ch = msvcrt.getch () # drugie wywołanie zwraca rzeczywisty kod klucza, jeśli echo: msvcrt.putch (ch) return ch.decode ()

a = []

dla i w zakresie (10): a.append (readch ())

Błąd, który otrzymałem:

>>> 

Traceback (most recent call last):
  File "C:/Python25/1.py", line 30, in <module>
    a.append(readch())
  File "C:/Python25/1.py", line 25, in readch
    return ch.decode()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

Czego potrzebuję pomocy

Funkcja działająca jak _getch () lub coś podobnego, która działa na komputerze z systemem Windows.

Specyfikacja maszyny

Python IDLE 2.5.4 lub 2.6 lub 2.7

Windows XP SP3

questionAnswers(2)

yourAnswerToTheQuestion