2016-07-13 3 views
0

Ich schreibe ein Python-Programm (unter OS X/Linux), in dem ein Benutzer einige Wörter in einer while-Schleife eingeben muss. Dies ist der relevante Teil davon:Stoppen Python-Eingabe, wenn ein bestimmtes Zeichen eingegeben wird

i = 0 
array = [] 
while (i < 10): 
    array.append(raw_input("Prompt: ")) 
    i = i + 1 

Allerdings Ich mag würde die Eingabe, sobald der Benutzer ein SPACE, ohne die Notwendigkeit zu stoppen drücken Sie die Eingabetaste.

Ich weiß, ich kann dies nicht mit raw_input tun, aber ich habe keine Möglichkeit zu erreichen, was ich versuche zu tun. Grundsätzlich möchte ich, dass der Benutzer ein Wort nach dem anderen eingeben kann, indem er die Taste SPACE anstelle von ENTER benutzt, um das nächste Wort einzugeben.

Haben Sie eine Idee? Danke im Voraus.

+0

dann müssen Sie andere Eingabemethoden verwenden. raw_input wartet, bis ein eol/eod hinzugefügt wird (z. B. Benutzertreffer zurück). Sie müssen jeden Schlüsselstrich verarbeiten und nach Leerzeichen suchen. –

+0

Mit 'raw_input',' input' oder 'sys.stdin.read (1)' ist das auch nicht möglich. Es gibt keine generische Lösung, die auf jedem Betriebssystem funktioniert. – pts

+0

Das ist ziemlich plattformspezifisch. [Siehe hier] (http://stackoverflow.com/questions/510357/python-read-a-single-character-from-the-user) - Sie könnten auch etwas wie tkinter für die Behandlung von solchen Ereignissen oder Neuzuordnung verwenden die Eingabetaste während des Eingabeprozesses in die Leertaste - aber wahrscheinlich komplizierter als Sie suchen und Sie würden (müssen) für verschiedene Tastaturlayouts benötigen/müssen. – sytech

Antwort

0

Mit raw_input, input oder sys.stdin.read(1) ist es auch nicht möglich. Es gibt keine generische Lösung, die auf jedem Betriebssystem funktioniert.

Hier ist, wie ein einzelnes Zeichen vom Benutzer in Python zu lesen, ohne Enter-Taste: Python read a single character from the user

Dann müssen Sie jedes Zeichen in einer for Schleife verarbeiten.