Ga naar hoofdinhoud

15c De melding bewaren

Soms wil je wel laten zien wat Python van de fout vond, maar zonder dat je programma stopt. Met as bewaar je de fout in een variabele:

tekst = "twaalf"

try:
getal = int(tekst)
except ValueError as fout:
print(f"Dat lukte niet: {fout}")

Uitvoer:

Dat lukte niet: invalid literal for int() with base 10: 'twaalf'

fout is de fout zelf. Print je hem, dan zie je de melding die Python anders onderaan de foutmelding had gezet, zonder de naam ValueError ervoor. De naam van de variabele kies je zelf; fout is gebruikelijk.


Opdracht 15c.1: Een logboek​

Zet elk getal uit de lijst om met int(). Lukt het niet, print dan de melding van Python achter Overgeslagen:.

Verwachte uitvoer:

3
Overgeslagen: invalid literal for int() with base 10: 'vier'
5
teksten = ["3", "vier", "5"]

for tekst in teksten:
    print(int(tekst))
Klik hier voor een tip.

Het try-blok staat binnen de for-loop, zodat de loop na een fout doorgaat met de volgende tekst.

Klik hier voor de oplossing.
teksten = ["3", "vier", "5"]

for tekst in teksten:
try:
print(int(tekst))
except ValueError as fout:
print(f"Overgeslagen: {fout}")

Uitvoer:

3
Overgeslagen: invalid literal for int() with base 10: 'vier'
5

Opdracht 15c.2: Een prijs die niet klopt​

Zet de prijs om met float(). Lukt dat niet, print dan welke tekst er stond én wat Python ervan vond.

Verwachte uitvoer:

Kon '12,50' niet lezen: could not convert string to float: '12,50'
prijs = "12,50"

bedrag = float(prijs)
print(bedrag)
Klik hier voor een tip.

Na except ValueError as fout: heb je in de f-string zowel prijs als fout tot je beschikking. Zet prijs tussen enkele aanhalingstekens in de tekst.

Klik hier voor de oplossing.
prijs = "12,50"

try:
bedrag = float(prijs)
print(bedrag)
except ValueError as fout:
print(f"Kon '{prijs}' niet lezen: {fout}")

Uitvoer:

Kon '12,50' niet lezen: could not convert string to float: '12,50'