Erklärung
dort gewesen wenig Änderungen zwischen Python 2.x und Python 3.x.
Einer von ihnen ist die Änderung der input
Funktion.
In Python 2 bewertet die input
-Funktion, was der Benutzer eingibt. Diese Funktion wird verwendet, wenn der Benutzer eine Nummer eingeben muss. Es wird geparst und die Variable, die den Rückgabewert input
enthält, ist vom Typ numerisch (float
oder int
).
https://docs.python.org/2/library/functions.html#input
In Ihrem Fall, da der Name des Benutzers wahrscheinlich keine Zahl ist, und wenn Sie mit Python arbeiten 2, können Sie die Funktion raw_input
, die die Eingabe des Benutzers als Rück String verwenden sollten ohne zu analysieren. Wenn der Benutzer eine Zahl eingibt, wird der String mit dieser Nummer zurückgegeben.
https://docs.python.org/2/library/functions.html#raw_input
Aus Sicherheitsgründen werden die input
Funktion von Python 2 ist nicht zu verwenden, zu empfehlen, da die Funktion die Eingabe auswerten, und obwohl es für das Parsen von Zahlen ohne Guss sehr bequem ist, sondern ermöglicht auch den Benutzer zu injizieren bösartiger Code in Ihre Anwendung;)
>>> print str(input("Enter your name: "))
Enter your name: __import__('os').listdir('.')
['super_secret.txt']
Somit wird die Eingabefunktion durch die raw_input Funktion in Python 3 und die raw_input Funktion entfernt wurde, ersetzt.
Fix
Ich denke, dass das Standardverhalten Ihres os ist python2
zu rufen, wenn Sie python
ausführen möchten.Also, wenn Sie python3
ausführen möchten, müssen Sie es sagen ausdrücklich:
Ihre IDE scheint korrekt konfiguriert zu sein, um python3 als Standardinterpreter zu verwenden.
Es klingt wie Sie IDLE von Python3 verwenden, aber das Skript verwendet Python2. Sie müssen 'raw_input()' in python2 verwenden. – Barmar
Ich benutze Python 3, wenn ich raw_input() setze, wird mir gesagt, dass es nicht definiert ist. – 0Bennyman
Das ist richtig. In Python 3 hat 'input()' das, was 'raw_input()' in Python 2 getan hat. Sie müssen sicherstellen, dass das Skript mit Python 3 ausgeführt wird. – Barmar