Ich möchte einen String von einem Benutzer erhalten und ihn dann bearbeiten.
testVar = input("Ask user for something.")
Gibt es eine Möglichkeit für testVar, eine Zeichenfolge zu sein, ohne dass der Benutzer seine Antwort in Anführungszeichen setzt? dh "Hallo" gegen Hallo
Wenn der Benutzer Hallo eingibt, wird folgende Fehlermeldung angezeigt:
NameError: Name 'Hallo' ist nicht definiert
python
string
python-2.7
Mike Lee
quelle
quelle
input
ruft automatischeval()
Antworten:
Verwenden Sie
raw_input()
anstelle voninput()
:input()
wertet die Eingabe tatsächlich als Python-Code aus. Ich schlage vor, es niemals zu benutzen.raw_input()
Gibt die vom Benutzer eingegebene wörtliche Zeichenfolge zurück.quelle
input
jetzt so funktioniert und raw_input weg ist.input()
eine nützliche Funktion ist, und ich empfehle nicht, sie zu verwenden.Die Funktion
input
wertet auch die Daten aus, die sie gerade als Python-Code gelesen hat, was nicht wirklich das ist, was Sie wollen.Der generische Ansatz wäre, die Benutzereingaben (von
sys.stdin
) wie jede andere Datei zu behandeln. VersuchenWenn Sie es kurz halten möchten, können Sie verwenden,
raw_input
was das gleiche ist,input
aber die Auswertung weglässt.quelle
readline
- dies bietet ähnliche Funktionen wie Bash (sofort einsatzbereiter Verlauf, automatische Vervollständigung erfordert einige Beinarbeit)Wir können die
raw_input()
Funktion in Python 2 und dieinput()
Funktion in Python 3 verwenden. Standardmäßig nimmt die Eingabefunktion eine Eingabe im Zeichenfolgenformat vor. Für andere Datentypen müssen Sie die Benutzereingabe umwandeln.In Python 2 verwenden wir die
raw_input()
Funktion. Es wartet darauf, dass der Benutzer eine Eingabe eingibt und drückt,return
und wir müssen den Wert in einer Variablen speichern, indem wir ihn als unseren gewünschten Datentyp umwandeln. Seien Sie vorsichtig, wenn Sie Typguss verwendenIn Python 3 verwenden wir die Funktion input (), die einen Benutzereingabewert zurückgibt.
Wenn Sie einen String eingeben, int, float, eval, wird dieser als String-Eingabe verwendet
Wenn Sie eine Zeichenfolge für int cast eingeben
ValueError: invalid literal for int() with base 10:
Wenn Sie eine Zeichenfolge für Float Cast eingeben
ValueError: could not convert string to float
Wenn Sie eine Zeichenfolge für die Bewertung eingeben, gilt
NameError: name ' ' is not defined
dieser Fehler auch für Python 2.quelle
Wenn Sie in Python 2.x Eingabe anstelle von raw_input verwenden möchten, ist dieser Trick hilfreich
Nachdem,
wird gut funktionieren.
quelle
quelle
Mein Arbeitscode mit Korrekturen:
quelle
Dies ist meine Arbeit, um sicher zu gehen, falls ich in Zukunft auf Python 3 umsteigen muss.
quelle
Das Problem scheint in Python Version 3.4.2 behoben zu sein.
Wird gut funktionieren.
quelle
input
entspricht Python 2.xraw_input
(siehe docs.python.org/3.0/whatsnew/3.0.html#builtins ); Dies ist ein spezifisches Problem für 2.x.