raw input vs. input

Generell sollte auf input() verzichten und stattdessen raw_input() benutzen. input() ist im Prinzip nichts anderes als eval(raw_input()) und deswegen nicht ungefährlicher als eval selbst. Siehe Thema Sicherheit#Input

Oft möchte man, dass ein bestimmter Datentyp eingegeben wird. Hier ein paar Beispiele:

Zahleneingabe

   1 def zahl_eingabe():
   2     while True:
   3         eingabe = raw_input("Bitte eine Ganzzahl eingeben: ")
   4         try:
   5             zahl = int(eingabe)
   6         except ValueError:
   7             print "Fehler: Eingabe ist keine Ganzzahl."
   8         else:
   9             return zahl
  10 
  11 zahl = zahl_eingabe()
  12 print "Die eingegebene Zahl ist:", zahl

Benötigt man eine Fließkommazahl, kann man natürlich int() durch ein float() ersetzen und den Text entsprechend anpassen ;)

Programmschleife mit weiter (ja/nein)

Ein Programm in einer Schleife laufen zu lassen, kann man z.B. so realisieren:

   1 def main():
   2     print "Das Hauptprogramm..."
   3 
   4 while True:
   5     main()
   6     eingabe = raw_input("\nNoch mal? (j/n)")
   7     if not eingabe.lower().startswith("j"):
   8         print "Ende."
   9         break

raw input vs. input (last edited 2009-09-29 14:14:45 by JensDiemer)