0%

Im Gespräch mit deinem Programm

Wenn eine Umwandlung fehlschlägt

Eine Umwandlung funktioniert nur, wenn der Text die erwartete Form hat.

Die Übungsumgebung enthält:

age_text = input("Enter a whole-number age: ")
age = int(age_text)
print(f"Python stored {age} as an integer.")

Klicke auf Run, gib das Wort ten ein und drücke Enter.

Python meldet einen Fehler ähnlich diesem:

ValueError: invalid literal for int() with base 10: 'ten'

Mit input() ist alles in Ordnung. Es hat den String "ten" erfolgreich zurückgegeben. Der Fehler tritt in der nächsten Zeile auf, weil int() dieses Wort nicht in eine ganze Zahl umwandeln kann.

Der Fehler zeigt, welche Annahme nicht stimmt

Das Programm nimmt an, dass die Antwort eine ganze Zahl enthält. Die Person hat etwas anderes eingegeben.

Das unterscheidet sich von einem Syntaxfehler. Python hat den Code verstanden. Während der Ausführung ist es auf einen Wert gestoßen, den die Umwandlung nicht verwenden konnte.

ValueError bedeutet oft: „Diese Art der Umwandlung ist möglich, aber dieser konkrete Wert ist dafür ungeeignet.“

Probiere einen geeigneten Wert

Führe das Programm erneut aus. Gib diesmal 10 ein.

Die Umwandlung gelingt und das Programm gibt Folgendes aus:

Python stored 10 as an integer.

Probiere auch 10.5. Das ist eine gültige Dezimalzahl, aber sie ist nicht als ganze Zahl geschrieben. Deshalb meldet int("10.5") einen ValueError. float("10.5") würde sie akzeptieren.

Warum meldet int("ten") einen ValueError?

Wie Programme mit unerwarteten Eingaben umgehen

In der Praxis sollten Programme eine ungeeignete Antwort oft erkennen und erneut fragen oder eine verständliche Nachricht anzeigen. Dafür braucht es Entscheidungen und Wiederholungen, die du in späteren Kapiteln lernst.

Für den Moment:

  • Schreibe Eingabeaufforderungen, die die erwartete Antwort deutlich machen;

  • verwende int() nur, wenn du eine ganze Zahl erwartest;

  • verwende float(), wenn Dezimalzahlen erlaubt sein sollen;

  • lies einen ValueError als Information über den Wert, der umgewandelt wird.

Wenn du diesen Fehler absichtlich erzeugst, hast du einen hilfreichen Vergleich für das nächste Mal, wenn er unerwartet auftaucht.

Aufgabe

Führe das Programm erst mit ten, dann mit 10 aus und vergleiche die Ergebnisse. Beantworte den Wissenscheck, sobald du erklären kannst, warum sich der eine Wert umwandeln lässt und der andere nicht.