Unterschiede zwischen 'input' und 'raw_input' [duplicate]

7

In einem Tutorial habe ich gelesen, dass zwischen input und raw_input ein Unterschied besteht. Ich entdeckte, dass sie das Verhalten dieser Funktionen in Python 3.0 geändert haben. Was ist das neue Verhalten?

Und warum im Python-Konsolen-Interpreter dies

%Vor%

Sendet einen Fehler, aber wenn ich es in ein file.py stecke und es ausführe, tut es das nicht?

    
Guillermo Siliceo Trueba 27.09.2010, 03:07
quelle

3 Antworten

14

In% python 2.x gibt raw_input() eine Zeichenfolge zurück und input() wertet die Eingabe im Ausführungskontext aus, in dem sie aufgerufen wird

%Vor%

In Python 3.x wurde input verschrottet und die zuvor als raw_input bekannte Funktion ist jetzt input . Sie müssen also compile und eval manuell aufrufen, wenn Sie die alte Funktionalität möchten.

%Vor%

In 3.x geht die obige Sitzung so

%Vor%

Sie haben wahrscheinlich einen Fehler beim Interpreter bekommen, weil Sie keine Eingaben in Ihre Eingabe geschrieben haben. Dies ist notwendig, weil es ausgewertet wird. Wo bekommen Sie einen Namensfehler?

    
aaronasterling 27.09.2010, 03:12
quelle
3

input () vs raw_input ()

raw_input sammelt die vom Benutzer eingegebenen Zeichen und stellt sie als Zeichenfolge dar.  input () wertet nicht nur Zahlen aus, sondern behandelt jede Eingabe als Python-Code und versucht sie auszuführen. Sachkundige, aber böswillige Benutzer könnten einen Python-Befehl eingeben, der sogar eine Datei löschen kann. Bleiben Sie bei raw_input () und konvertieren Sie die Zeichenfolge in den Datentyp, den Sie mit Pythons integrierten Konvertierungsfunktionen benötigen.

Auch Eingabe (), ist nicht vor Benutzerfehlern sicher! Er erwartet einen gültigen Python-Ausdruck als Eingabe; Wenn die Eingabe nicht syntaktisch gültig ist, wird ein SyntaxError ausgelöst.

    
Blueice 19.12.2010 12:51
quelle
3

Es ist einfach:

  1. raw_input() gibt Stringwerte
  2. zurück
  3. while input() gibt ganzzahlige Werte zurück

Zum Beispiel:

1.

%Vor%

Ausgabe:

%Vor%

2.

%Vor%

Ausgabe:

%Vor%

Wenn wir also x + x = ausführen, wird es als 123123

ausgegeben

Wenn wir y + y = ausführen, wird es als 246

ausgegeben     
aniketectech 18.11.2013 15:06
quelle

Tags und Links