Seite 1 von 1

Fehler bei Eingabe

Verfasst: Sonntag 15. Januar 2012, 20:01
von amigo
Hi,
ich wollte wissen welche exception ich benutzen muss, damit die eingabe nur zahlen akzeptiert.
Habe bis jetzt immer NameError benutzt aber die fängt keine Sonderzeichen ab.
Folgender Code:

Code: Alles auswählen

while True :
     try:
          zahl = input("Geben Sie bitte eine Zahl ein: ")
          break
     except NameError:
          print "Ungültige Eingabe!"
     

print zahl
          
Also ich möchte das er nur Zahlen annimmt und bei allem anderen Ungültige Eingabe ausgibt!
Danke im Vorraus :)

Re: Fehler bei Eingabe

Verfasst: Sonntag 15. Januar 2012, 20:11
von Hyperion
Benutzt Du Python 3 oder 2? Wenn Du Python 2 benutzt, lies bitte noch einmal den Kommentar in Deinem letzten Thread.
amigo hat geschrieben: ich wollte wissen welche exception ich benutzen muss, damit die eingabe nur zahlen akzeptiert.
Probiere es doch aus:

Code: Alles auswählen

In [27]: int("Hallo Welt")
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/home/nelson/<ipython-input-27-d02ff7e65343> in <module>()
----> 1 int("Hallo Welt")

ValueError: invalid literal for int() with base 10: 'Hallo Welt'
Gehen wir davon aus, dass Du Python3 benutzt.
Um Klarheit zu schaffen: Die Eingabe akzeptiert erst einmal alles und liefert das als String zurück. Diesen musst Du dann mit einer passenden Funktion in den von Dir gewünschten Datentypen umwandeln, also z.B. in einen Integer mittels `int()`-Funktion (s. mein Beispiel).

Edit: Bitte benutze für Python-Code die Python-Code-Tags!

Re: Fehler bei Eingabe

Verfasst: Sonntag 15. Januar 2012, 20:19
von nomnom
Er benutzt das print-Statement, daraus schließe ich: Er benutzt Python 2. ;) Schau dir halt nochmal mein Posting in deinem letzten Thread an, da hab ichs dir ja schon erklärt.

Re: Fehler bei Eingabe

Verfasst: Sonntag 15. Januar 2012, 20:24
von Hyperion
nomnom hat geschrieben:Er benutzt das print-Statement, daraus schließe ich: Er benutzt Python 2. ;)
Ah... ich habe in seinem letzten Thread ja geguckt und habe das nur das `print` ganz am Schluss gesehen - und da setzte er ja Klammern drum herum. So eine unsägliche Sitte :x

Re: Fehler bei Eingabe

Verfasst: Sonntag 15. Januar 2012, 20:27
von /me
Hyperion hat geschrieben:Ah... ich habe in seinem letzten Thread ja geguckt und habe das nur das `print` ganz am Schluss gesehen - und da setzte er ja Klammern drum herum. So eine unsägliche Sitte :x
Das hängt davon ab.Heutzutage wird doch wohl jeder unter Python 2 mindestens das Folgende gesetzt haben.

Code: Alles auswählen

from __future__ import print_function
from __future__ import unicode_literals

Re: Fehler bei Eingabe

Verfasst: Sonntag 15. Januar 2012, 20:34
von Hyperion
/me hat geschrieben: Das hängt davon ab.Heutzutage wird doch wohl jeder unter Python 2 mindestens das Folgende gesetzt haben.

Code: Alles auswählen

from __future__ import print_function
from __future__ import unicode_literals
Es gibt Leute, die raten speziell von `print` als Funktion in Python2 ab: Mistohikus Blog

Zudem verwendet der OP das ja auch nicht durchgängig - ich hatte die oberen print-Statements schlicht nicht mehr wahrgenommen.

Re: Fehler bei Eingabe

Verfasst: Montag 16. Januar 2012, 18:43
von amigo
Also ich hab jetzt

Code: Alles auswählen

raw_input
benutzt aber wenn ich mit int() konvertieren will und das keine gültige eingabe ist, dann gibt´s nen Error. Mit welcher Exception kann ich den abfangen?

Re: Fehler bei Eingabe

Verfasst: Montag 16. Januar 2012, 18:46
von Hyperion
amigo hat geschrieben:... aber wenn ich mit int() konvertieren will und das keine gültige eingabe ist, dann gibt´s nen Error. Mit welcher Exception kann ich den abfangen?
Ist jetzt nicht Dein Ernst, oder? :shock:

ALso bitte: noch einmal ein Link nach oben. :P

Re: Fehler bei Eingabe

Verfasst: Montag 16. Januar 2012, 18:47
von amigo
Okay hab´s selber rausgefunden. Muss ValueError verwenden. Aber kann mir jemand sagen wie viele Exceptions es ungefähr gibt?

Re: Fehler bei Eingabe

Verfasst: Montag 16. Januar 2012, 18:50
von Hyperion
amigo hat geschrieben:Aber kann mir jemand sagen wie viele Exceptions es ungefähr gibt?
Da schaust Du mal in die Doku, Python Standard Library, Kapitel 5: "Built-in Exceptions". Dort stehen sie alle. Meine grobe Schätzung ist jetzt mal 50.