400 Stimmen

Was ist der Unterschied zwischen `raw_input()` und `input()` in Python 3?

Was ist der Unterschied zwischen raw_input() y input() in Python 3?

453voto

Sven Marnach Punkte 525472

Der Unterschied besteht darin, dass raw_input() existiert nicht in Python 3.x, während input() tut. Eigentlich ist die alte raw_input() wurde umbenannt in input() und die alte input() ist verschwunden, kann aber leicht simuliert werden, indem man eval(input()) . (Denken Sie daran, dass eval() ist böse. Versuchen Sie, Ihre Eingaben nach Möglichkeit auf sicherere Weise zu analysieren).

199voto

Thomas K Punkte 37728

In Python 2 , raw_input() gibt eine Zeichenkette zurück, und input() versucht, die Eingabe als Python-Ausdruck auszuführen.

Da eine Zeichenkette fast immer das ist, was Sie wollen, macht Python 3 das mit input() . Wie Sven sagt, wenn Sie jemals das alte Verhalten wollen, eval(input()) funktioniert.

125voto

screenglow Punkte 1836

Python 2:

  • raw_input() nimmt genau das, was der Benutzer eingegeben hat, und gibt es als Zeichenkette zurück.

  • input() nimmt zunächst die raw_input() und führt dann eine eval() auch darauf.

Der Hauptunterschied besteht darin, dass input() erwartet eine syntaktisch korrekte Python-Anweisung, bei der raw_input() nicht.

Python 3:

  • raw_input() wurde umbenannt in input() also jetzt input() gibt die genaue Zeichenkette zurück.
  • Alte input() wurde entfernt.

Wenn Sie die alte input() d.h. Sie müssen eine Benutzereingabe als Python-Anweisung auswerten, müssen Sie dies manuell tun, indem Sie eval(input()) .

31voto

hackwithharsha Punkte 871

In Python 3, raw_input() gibt es nicht, was Sven bereits erwähnt hat.

In Python 2 wird die input() Funktion wertet Ihre Eingabe aus.

Beispiel:

name = input("what is your name ?")
what is your name ?harsha

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    name = input("what is your name ?")
  File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined

Im obigen Beispiel versucht Python 2.x, harsha als Variable und nicht als String auszuwerten. Um dies zu vermeiden, können wir doppelte Anführungszeichen um unsere Eingabe wie "harsha" verwenden:

>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha

rohe_eingabe()

Die Funktion raw_input()` wertet nicht aus, sondern liest einfach, was Sie eingeben.

Beispiel:

name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'

Beispiel:

 name = eval(raw_input("what is your name?"))
what is your name?harsha

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    name = eval(raw_input("what is your name?"))
  File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined

Im obigen Beispiel habe ich gerade versucht, die Benutzereingabe mit dem eval Funktion.

8voto

Rubal Punkte 936

Ich möchte die von allen Beteiligten gegebene Erklärung für die python 2 benutzer . raw_input() die, wie Sie inzwischen wissen, alle Daten auswertet, die der Benutzer als Zeichenkette eingibt. Das bedeutet, dass Python nicht noch einmal versucht, die eingegebenen Daten zu verstehen. Alles, was er in Betracht zieht, ist, dass die eingegebenen Daten eine Zeichenkette sind, unabhängig davon, ob es sich um eine tatsächliche Zeichenkette oder eine Zahl handelt oder nicht.

Während input() auf der anderen Seite versucht, die vom Benutzer eingegebenen Daten zu verstehen. So wird die Eingabe wie helloworld würde den Fehler sogar als ' helloworld is undefined '.

Zusammenfassend lässt sich sagen, dass für python 2 um auch eine Zeichenkette einzugeben, müssen Sie diese wie folgt eingeben: ' helloworld ', die in Python übliche Struktur zur Verwendung von Zeichenketten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X