646 Stimmen

Wie kann ich raw_input in Python 3 verwenden?

import sys
print(sys.platform)
print(2**100)
raw_input()

Ich verwende Python 3.1 und kann nicht die raw_input um das Dos-Pop-up "einzufrieren". Das Buch, das ich lese, ist für Python 2.5 und ich benutze Python 3.1

Was sollte ich tun, um das zu beheben?

1162voto

balpha Punkte 47970

Beginnend mit Python 3, raw_input() wurde umbenannt in input() .

Von Was ist neu in Python 3.0, Abschnitt Builtins zweiter Punkt.

123voto

Cees Timmerman Punkte 15076

Dies funktioniert in Python 3.x und 2.x:

# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))

53voto

tacaswell Punkte 79032

Ein zuverlässiger Weg zur Lösung dieses Problems ist

from six.moves import input

sechs ist ein Modul, das viele der 2/3 häufigsten Probleme in der Codebasis behebt.

16voto

Weeble Punkte 15723

Wie andere bereits angedeutet haben, ist die raw_input Funktion wurde umbenannt in input in Python 3.0, und Sie wären mit einem aktuelleren Buch wirklich besser bedient, aber ich möchte darauf hinweisen, dass es bessere Möglichkeiten gibt, die Ausgabe Ihres Skripts zu sehen.

Nach Ihrer Beschreibung zu urteilen, verwenden Sie Windows, Sie haben eine .py Datei und führen sie dann per Doppelklick aus. Das sich öffnende Terminalfenster schließt sich, sobald Ihr Programm beendet ist, so dass Sie nicht sehen können, was das Ergebnis Ihres Programms war. Um dieses Problem zu lösen, empfiehlt Ihr Buch das Hinzufügen einer raw_input / input Anweisung, um zu warten, bis der Benutzer die Eingabetaste drückt. Wie Sie jedoch gesehen haben, wird diese Anweisung nicht ausgeführt, wenn etwas schief geht, z. B. ein Fehler in Ihrem Programm, und das Fenster wird geschlossen, ohne dass Sie sehen können, was schief gegangen ist. Sie könnten es einfacher finden, eine Eingabeaufforderung oder IDLE zu verwenden.

Verwenden Sie eine Eingabeaufforderung

Wenn Sie das Ordnerfenster mit Ihrem Python-Programm sehen, halten Sie die Umschalttaste gedrückt und klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im weißen Hintergrundbereich des Fensters. Das Menü, das sich öffnet, sollte den Eintrag "Befehlsfenster hier öffnen" enthalten. (Ich glaube, das funktioniert unter Windows Vista und Windows 7.) Dadurch wird ein Eingabeaufforderungsfenster geöffnet, das etwa so aussieht:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

    C:\Users\Weeble\My Python Program>_

Um Ihr Programm auszuführen, geben Sie Folgendes ein (ersetzen Sie den Namen Ihres Skripts):

    python myscript.py

...und drücken Sie die Eingabetaste. (Wenn Sie eine Fehlermeldung erhalten, dass "python" kein anerkannter Befehl ist, siehe http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) Wenn Ihr Programm beendet ist, egal ob es erfolgreich abgeschlossen wurde oder nicht, bleibt das Fenster geöffnet und die Eingabeaufforderung erscheint erneut, damit Sie einen weiteren Befehl eingeben können. Wenn Sie Ihr Programm erneut ausführen möchten, können Sie den Pfeil nach oben drücken, um den zuvor eingegebenen Befehl aufzurufen, und die Eingabetaste drücken, um ihn erneut auszuführen, anstatt jedes Mal den Dateinamen eingeben zu müssen.

IDLE verwenden

IDLE ist ein einfacher Programmeditor, der mit Python installiert wird. Neben anderen Funktionen kann er Ihre Programme in einem Fenster ausführen. Klicken Sie mit der rechten Maustaste auf Ihr .py Datei und wählen Sie "In IDLE bearbeiten". Wenn Ihr Programm im Editor erscheint, drücken Sie F5 oder wählen Sie "Modul ausführen" aus dem Menü "Ausführen". Ihr Programm wird in einem Fenster ausgeführt, das nach Beendigung Ihres Programms geöffnet bleibt und in dem Sie Python-Befehle eingeben können, um es sofort auszuführen.

8voto

jmagnusson Punkte 5690

Timmermans Lösung funktioniert großartig, wenn man den Code ausführt, aber wenn Sie nicht wollen, dass Undefined name Fehler bei der Verwendung von pyflakes oder einem ähnlichen Linter können Sie stattdessen wie folgt verwenden:

try:
    import __builtin__
    input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
    pass

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X