kaytec hat geschrieben:Das eine float kann ich weglassen, doch bei dem Vergleichen der Zahlen ist es doch egal, da keine kommastellen entstehen können - sind doch immer ganze Zahlen.
In diesem Kontext wird das mit hoher Wahrscheinlichkeit immer funktionieren, aber man weiss ja nie was noch hinzugebaut wird. Das Problem mit Fließkommazahlen ist also eher allgemeiner Natur. Wenn aber nur ganze Zahlen auftreten können, dann frage ich mich, warum du nicht gleich Integers benutzt
kaytec hat geschrieben:Das mit der try - except Anweisung verstehe ich nicht so ganz ?
Das Problem ist, um so größer der try-Teil wird, desto höher ist auch die Wahrscheinlichkeit, dass du Fehler abfängst die du gar nicht abfangen willst. Hinzu kommt noch, dass man bei einem langen try-Teil suchen muss, welche(r) Fehler denn abgefangen werden soll. Ist dieser kurz gehalten, ist dieses im Allgemeinen jedoch recht einfach.
Aus
Code: Alles auswählen
try:
spam = eggs[0] #Hier kann etwas schiefgehen (Index-Fehler)
#Code bei dem kein Index-Fehler auftreten sollte
#...
wert = berechne_etwas()
except IndexError:
#Defaultwert setzen
wert = 1
solltest du also folgendes machen:
Code: Alles auswählen
try:
spam = eggs[0] #Moeglicher Indexfehler
except IndexError:
#Defaultwert setzen
wert = 1
else:
#Code bei dem kein Index-Fehler auftreten sollte
#...
wert = berechne_etwas()
Wenn jetzt nämlich beispielsweise in "berechne_wert" ein Index-Fehler auftritt, den du eigentlich nicht abfangen wolltest, wird dir dieser auch gemeldet und nicht aus Versehen verdeckt.
Wenn du aus dem except-Teil mit "return" springst, kannst du auch den else-Teil weglassen, und hinter dem except-Teil auf gleicher Ebene wie das try-Statement weiterarbeiten.
Sebastian