it-swarm.com.de

Wie verwende ich raw_input in Python 3?

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

Ich verwende Python 3.1 und kann den raw_input nicht zum "Einfrieren" des DOS-Popups bringen. Das Buch, das ich lese, ist für Python 2.5 und ich verwende Python 3.1

Was soll ich tun, um dies zu beheben?

497
Lonnie Price

raw_input() wurde in input() umbenannt

From Was ist neu in Python 3. .

928
balpha

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: "))
107
Cees Timmerman

Ein zuverlässiger Weg, dies zu beheben, ist

from six.moves import input

sechs ist ein Modul, das viele der 2/3 gängigen Schmerzpunkte der Codebasis überdeckt.

41
tacaswell

In Python 3.xx brauchen Sie nur input() nicht raw_input()

17
Efs

Wie andere bereits angedeutet haben, wurde die Funktion raw_input in Python 3.0 in input umbenannt, und ein aktuelleres Buch würde Sie wirklich besser bedienen, aber ich Ich möchte darauf hinweisen, dass es bessere Möglichkeiten gibt, die Ausgabe Ihres Skripts zu sehen.

Nach Ihrer Beschreibung verwenden Sie vermutlich Windows. Sie haben eine .py -Datei gespeichert und doppelklicken darauf, um sie auszuführen. Das sich öffnende Terminalfenster wird geschlossen, sobald Ihr Programm beendet ist. Sie können also nicht sehen, was das Ergebnis Ihres Programms war. Um dies 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 gesehen haben, wird diese Anweisung jedoch nicht ausgeführt, wenn ein Fehler auftritt, 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 Programm Python 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 "Kommandofenster hier öffnen" enthalten. (Ich denke, das funktioniert unter Windows Vista und Windows 7.) Dies öffnet ein Eingabeaufforderungsfenster, das ungefähr so ​​aussieht:

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

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

Geben Sie zum Ausführen Ihres Programms Folgendes ein (ersetzen Sie Ihren Skriptnamen):

    python myscript.py

... und drücken Sie die Eingabetaste. (Wenn Sie eine Fehlermeldung erhalten, dass "python" kein erkannter Befehl ist, lesen Sie http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) Wenn Ihr Programm beendet ist, überprüfen Sie, ob es ausgeführt wird Wird der Vorgang erfolgreich abgeschlossen oder nicht, bleibt das Fenster 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 den Dateinamen jedes Mal neu eingeben zu müssen.

Verwenden Sie IDLE

IDLE ist ein einfacher Programmeditor, der mit Python installiert wird. Unter anderem kann es Ihre Programme in einem Fenster ausführen. Klicken Sie mit der rechten Maustaste auf Ihre .py -Datei und wählen Sie "In IDLE 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 Programmende geöffnet bleibt und in das Sie Python Befehle eingeben können, um es sofort auszuführen.

14
Weeble

Die Lösung von Timmerman funktioniert hervorragend, wenn Sie den Code ausführen, aber wenn Sie bei der Verwendung von Pyflakes oder einem ähnlichen Linter keine Undefined name -Fehler erhalten möchten, können Sie stattdessen Folgendes verwenden:

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

Hier ist ein Teil des Codes, den ich in meine Skripte eingefügt habe und der in einer py2/3-agnostischen Umgebung nicht ausgeführt werden soll:

# Thank you, python2-3 team, for making such a fantastic mess with
# input/raw_input :-)
real_raw_input = vars(__builtins__).get('raw_input',input)

Jetzt können Sie real_raw_input verwenden. Es ist ziemlich teuer, aber kurz und lesbar. Die Verwendung von unformatierten Eingaben ist normalerweise zeitaufwendig (Warten auf Eingaben), daher ist dies nicht wichtig.

Theoretisch können Sie auch raw_input anstelle von real_raw_input zuweisen, aber es kann Module geben, die die Existenz von raw_input prüfen und sich entsprechend verhalten. Es ist besser, auf der sicheren Seite zu bleiben.

6
ChewbaccaKL

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 Unterbrechung des Studiums zu haben.

def raw_input(x):
  input(x)

Wenn ich dann raw_input('Enter your first name: ') für das Skript ausführe, an dem ich gearbeitet habe, erfasst es es wie input().

Es kann einen Grund geben, dies nicht zu tun, da ich noch nicht darauf gestoßen bin!

1
Danijel-James W

die Funktion raw_input () wurde aus Python 3.x entfernt. um die Eingabe python2 zu nehmen, die verwendet wurde, um zwei Funktionen zu haben, die input () und raw_input () waren

Wenn Sie die gleiche Funktion von 2.x in 3.x verwenden möchten, um Eingabeparameter zu übernehmen, folgen Sie diesem Wiki-Link https://en.wikibooks.org/wiki/Python_Programming/Input_and_Output

0
Rahul Anand