import sys
print(sys.platform)
print(2**100)
raw_input()
Ich verwende Python 3.1 und kann raw_input
das Dos-Popup nicht "einfrieren". Das Buch, das ich lese, ist für Python 2.5 und ich verwende Python 3.1
Was soll ich tun, um das zu beheben?
python
python-3.x
Lonnie Price
quelle
quelle
Antworten:
Beginnend mit Python 3
raw_input()
wurde in umbenanntinput()
.Aus den Neuerungen in Python 3.0, Abschnitt Builtins, zweites Element.
quelle
input()
und festgestelltraw_input()
.a = input()
nimmt die Benutzereingabe und fügt sie in den richtigen Typ ein. Beispiel: Wenn der Benutzer 5 eingibt, ist der Wert ina
eine Ganzzahl 5.a = raw_input()
Die Benutzereingabe wird als Zeichenfolge eingefügt. Beispiel: Wenn der Benutzer 5 eingibt, ist der Wert ina
die Zeichenfolge '5' und keine Ganzzahl. Ich dachte, es könnte eine gute Information für Neulinge in Python wie mich sein.Dies funktioniert in Python 3.x und 2.x:
quelle
global input
am oberen Rand der aufrufenden Funktion behoben.import __builtin__; input = getattr(__builtin__, 'raw_input', input)
__builtin__
.__builtin__
wirdbuiltins
in Python 3 umbenannt . Beide sind wie__builtins__
in CPython verfügbar .getattr(__builtins__, 'raw_input', input)
Gibt beim Import in Python 2.7.2 die Standardeinstellung zurück.Ein zuverlässiger Weg, dies zu beheben, ist
six ist ein Modul, das viele der 2/3 allgemeinen Codebasis-Schwachstellen korrigiert.
quelle
from six.moves import input as raw_input
, können Sieraw_input
in Ihrem Skript bleiben und beide Python-Versionen verwenden.Wie andere angegeben haben, wurde die
raw_input
Funktioninput
in Python 3.0 umbenannt, und Sie würden wirklich besser von einem aktuelleren Buch bedient werden, aber ich möchte darauf hinweisen, dass es bessere Möglichkeiten gibt, die Ausgabe Ihres Skripts zu sehen .Nach Ihrer Beschreibung verwenden Sie Windows, haben eine
.py
Datei gespeichert und doppelklicken darauf, um sie auszuführen. Das sich öffnende Terminalfenster wird geschlossen, sobald Ihr Programm endet, sodass Sie nicht sehen können, was das Ergebnis Ihres Programms war. Um dies zu lösen, empfiehlt Ihr Buch das Hinzufügen einesraw_input
/input
, 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 gelaufen ist. Möglicherweise ist es einfacher, eine Eingabeaufforderung oder IDLE zu verwenden.Verwenden Sie eine Eingabeaufforderung
Wenn Sie sich das Ordnerfenster ansehen, das Ihr Python-Programm enthält, halten Sie die Umschalttaste gedrückt und klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im weißen Hintergrundbereich des Fensters. Das sich öffnende Menü sollte den Eintrag "Befehlsfenster hier öffnen" enthalten. (Ich denke, das funktioniert unter Windows Vista und Windows 7.) Dadurch wird ein Eingabeaufforderungsfenster geöffnet, das ungefähr so aussieht:
Geben Sie Folgendes ein, um Ihr Programm auszuführen (ersetzen Sie Ihren Skriptnamen):
... und drücken Sie die Eingabetaste. (Wenn Sie die Fehlermeldung erhalten, dass "Python" kein erkannter Befehl ist, lesen Sie http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96. ) Wenn Ihr Programm ausgeführt wird, wird das Fenster unabhängig davon abgeschlossen, ob es erfolgreich abgeschlossen wurde oder nicht bleibt geöffnet und die Eingabeaufforderung wird erneut angezeigt, damit Sie einen anderen Befehl eingeben können. Wenn Sie Ihr Programm erneut ausführen möchten, können Sie den Aufwärtspfeil drücken, um den zuvor eingegebenen Befehl abzurufen, und die Eingabetaste drücken, um es erneut auszuführen, anstatt jedes Mal den Dateinamen eingeben zu müssen.
Verwenden Sie IDLE
IDLE ist ein einfacher Programmeditor, der mit Python installiert wird. Unter anderem können Ihre Programme in einem Fenster ausgeführt werden. Klicken Sie mit der rechten
.py
Maustaste auf Ihre Datei und wählen Sie "Im Leerlauf bearbeiten". Wenn Ihr Programm im Editor angezeigt wird, 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 dem Ende Ihres Programms geöffnet bleibt und in dem Sie Python-Befehle eingeben können, die sofort ausgeführt werden sollen.quelle
pythonw -m idlelib.idle
Die Lösung von Timmerman funktioniert hervorragend, wenn der Code ausgeführt wird. Wenn Sie jedoch
Undefined name
bei der Verwendung von Pyflakes oder einem ähnlichen Linter keine Fehler erhalten möchten, können Sie stattdessen Folgendes verwenden:quelle
Redefining built-in 'input' (redefined-builtin)
,Unable to import '__builtin__' (import-error)
,Invalid constant name "input" (invalid-name)
.flake8
oderpyflakes
, um nicht alle Tages mit sinnlose Warnungen in Anspruch nehmen.Hier ist ein Teil des Codes, den ich in meine Skripte eingefügt habe und den ich nicht in einer py2 / 3-agnostischen Umgebung ausführen möchte:
Jetzt können Sie real_raw_input verwenden. Es ist ziemlich teuer, aber kurz und lesbar. Die Verwendung von Roheingaben ist normalerweise zeitaufwändig (Warten auf Eingaben), daher ist dies nicht wichtig.
Theoretisch können Sie sogar raw_input anstelle von real_raw_input zuweisen. Möglicherweise gibt es jedoch Module, die das Vorhandensein von raw_input überprüfen und sich entsprechend verhalten. Es ist besser, auf der sicheren Seite zu bleiben.
quelle
Wahrscheinlich nicht die beste Lösung, aber bevor ich hierher kam, habe ich dies im laufenden Betrieb gemacht, um weiter zu arbeiten, ohne eine kurze Pause vom Studium zu machen.
Wenn ich dann
raw_input('Enter your first name: ')
das Skript ausführe, an dem ich gearbeitet habe, erfasst es es wie gewohntinput()
.Es kann einen Grund geben, dies nicht zu tun, auf den ich noch nicht gestoßen bin!
quelle
raw_input = input
?