Ich habe String-Variablentest. In Python 2.7 funktioniert das einwandfrei.
test = raw_input("enter the test")
print test
Aber in Python 3.3. ich benutze
test = input("enter the test")
print test
mit der Eingabezeichenfolge sdas
und ich bekomme eine Fehlermeldung
Traceback (letzter Anruf zuletzt):
Datei "/home/ananiev/PycharmProjects/PigLatin/main.py",
zeile 5, in test = Eingabe ("Test eingeben")
Datei "", Zeile 1, in NameError: Name 'sdas' ist nicht definiert
Sie führen Ihren Python 3-Code mit einem Python 2-Interpreter aus. Andernfalls würde Ihre print
-Anweisung eine SyntaxError
ausgeben, bevor Sie jemals zur Eingabe aufgefordert wurden.
Das Ergebnis ist, dass Sie Python 2 input
verwenden, das versucht, Ihre Eingabe (vermutlich eval
) zu sdas
zu machen, dass es ungültig ist und stirbt.
Ich würde sagen, der Code, den Sie brauchen, ist:
test = input("enter the test")
print(test)
Ansonsten sollte es aufgrund eines Syntaxfehlers überhaupt nicht laufen. Die Funktion print
erfordert Klammern in Python 3. Ich kann Ihren Fehler jedoch nicht reproduzieren. Sind Sie sicher, dass diese Zeilen diesen Fehler verursachen?
Nun, die Frage ist sehr einfach, ich weiß nicht, warum die Leute so schlecht antworten.
Lösung:
Wenn Sie Python 2.x verwenden:
then for evaluated input use "input"
example: number = input("enter a number")
and for string use "raw_input"
example: name = raw_input("enter your name")
Wenn Sie Python 3.x verwenden:
then for evaluated result use "eval" and "input"
example: number = eval(input("enter a number"))
for string use "input"
example: name = input("enter your name")
temperature = input("What's the current temperature in your city? (please use the format ??C or ???F) >>> ")
### warning... the result from input will <str> on Python 3.x only
### in the case of Python 2.x, the result from input is the variable type <int>
### for the <str> type as the result for Python 2.x it's neccessary to use the another: raw_input()
temp_int = int(temperature[:-1]) # 25 <int> (as example)
temp_str = temperature[-1:] # "C" <str> (as example)
if temp_str.lower() == 'c':
print("Your temperature in Fahrenheit is: {}".format( (9/5 * temp_int) + 32 ) )
Elif temp_str.lower() == 'f':
print("Your temperature in Celsius is: {}".format( ((5/9) * (temp_int - 32)) ) )
sdas wird als Variable gelesen. Um einen String einzugeben, müssen Sie ""
Ich habe den gleichen Fehler bekommen. Als ich im Terminal "python dateiname.py" eingab, versuchte python2 mit diesem Befehl, python3-Code auszuführen, da python3 geschrieben wird. Es läuft korrekt, wenn ich im Terminal "python3 filename.py" eingebe. Ich hoffe das funktioniert auch für dich.
In Betriebssystemen wie Ubuntu ist Python vorinstalliert. Die Standardversion ist Python 2.7. Sie können die Version überprüfen, indem Sie den Befehl unten in Ihr Terminal eingeben
python -V
wenn Sie es installiert haben, aber keine Standardversion festgelegt haben, werden Sie sehen
python 2.7
im Terminal. Ich werde Ihnen sagen, wie Sie die Standard-Python-Version in Ubuntu einstellen.
Ein einfacher sicherer Weg wäre die Verwendung eines Alias. Fügen Sie dies in ~/.bashrc oder ~/.bash_aliases file ein:
alias python=python3
Nachdem Sie das Obige in die Datei eingefügt haben, führen Sie den folgenden Befehl aus:
source ~/.bash_aliases
oder source ~/.bashrc
Überprüfen Sie die Python-Version jetzt erneut mit python -V
wenn Python Version 3.x.x eins ist, dann liegt der Fehler in Ihrer Syntax, z. B. bei Verwendung von print mit Klammern. Ändern Sie es in
test = input("enter the test")
print(test)