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

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

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
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?
ALso bitte: noch einmal ein
Link nach oben.

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.