Hallo Zusammen,
Ich habe diese paar Zeilen in Xcode zusammengetippt und sobald ich das Programm teste auf eine Fehleingabe bricht das Programm ohne den Fehler abzufangen ab und gibt den Fehler mit wirrem Code aus.
Danke LG
Morten
# Initialisierung der while-Schleife
fehler = 1
# Schleife bei falscher Eingabe
while fehler == 1:
# Eingabe
print 'Bitte geben Sie eine Zahl ein'
z = input()
# Versuch der Umwandlung
try:
zahl = int(z)
print 'Sie haben die ganze Zahl', zahl, 'richtig eingegeben'
fehler = 0
# Fehler bei Umwandlung
except:
print 'Sie haben die ganze Zahl nicht richtig eingegeben'
print 'Ende des Programms'
Wo liegt mein Fehler bei diesem einfachen Code?
Das Wirre ist der Traceback, der genau sagt, wo der Fehler genau auftritt, nämlich in der Zeile `z = input()`; in Python2 mußt Du raw_input verwenden, außerdem nimm statt der while-fehler-Schleife eine while-True-Schleife und verlasse sie per break, dann ist keine Initialisierung mit einem Dummy-Wert nötig. Die Kommentare sind auch zum Teil falsch, denn die Schleife wird immer betreten, nicht nur bei falscher Eingabe. Exception sollten immer so konkret wie möglich angegeben werden, hier ValueError.
Aber am besten steigst Du gleich auf Python3 um. Das ist die aktuelle Variante.
Code: Alles auswählen
while True:
z = raw_input('Bitte geben Sie eine Zahl ein:')
try:
zahl = int(z)
break
except ValueError:
print 'Sie haben die ganze Zahl nicht richtig eingegeben'
print 'Sie haben die ganze Zahl', zahl, 'richtig eingegeben'
print 'Ende des Programms'