Wo liegt mein Fehler bei diesem einfachen Code?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mortench
User
Beiträge: 3
Registriert: Samstag 5. Januar 2019, 00:36

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'
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte Code in den dafür vorgesehenen Code-Tags Posten. Und auch die komplette Fehlermeldung.
Sirius3
User
Beiträge: 18269
Registriert: Sonntag 21. Oktober 2012, 17:20

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.

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'
Aber am besten steigst Du gleich auf Python3 um. Das ist die aktuelle Variante.
Antworten