0%

In gesprek met je programma

Als omzetten niet lukt

Omzetten werkt alleen als de tekst de verwachte vorm heeft.

In de playground staat:

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

Klik op Run, voer het woord ten in en druk op Enter.

Python meldt een fout die lijkt op:

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

Er is niets mis met input(). Die functie heeft de string "ten" correct teruggegeven. De fout ontstaat op de volgende regel, omdat int() dat woord niet kan omzetten in een geheel getal.

De fout vertelt welke aanname niet klopte

Het programma gaat ervan uit dat het antwoord een geheel getal bevat. De persoon heeft iets anders ingevoerd.

Dit is iets anders dan een syntaxisfout. Python begreep de code. Tijdens het uitvoeren kwam het een waarde tegen die de omzetting niet kon gebruiken.

ValueError betekent vaak: ‘Dit soort omzetting is mogelijk, maar deze specifieke waarde is niet geschikt.’

Probeer een geschikte waarde

Voer het programma opnieuw uit. Voer deze keer 10 in.

De omzetting lukt en het programma drukt af:

Python stored 10 as an integer.

Probeer ook 10.5. Dat is een geldig decimaal getal, maar het is niet geschreven als een geheel getal. Daarom meldt int("10.5") een ValueError. float("10.5") zou het wel accepteren.

Waarom meldt int("ten") een ValueError?

Hoe programma’s omgaan met onverwachte invoer

In de praktijk moeten programma’s vaak een ongeschikt antwoord herkennen en de vraag opnieuw stellen of een vriendelijke melding tonen. Om dat goed te doen, heb je beslissingen en herhaling nodig. Die leer je in latere hoofdstukken.

Voor nu:

  • schrijf vragen die duidelijk maken welk antwoord je verwacht;

  • gebruik int() alleen als je een geheel getal verwacht;

  • gebruik float() als decimalen zijn toegestaan;

  • lees een ValueError als informatie over de waarde die wordt omgezet.

Door deze fout bewust te maken, herken je hem makkelijker als je hem een volgende keer onverwacht tegenkomt.

Opdracht

Voer het programma uit met ten en daarna met 10. Vergelijk de resultaten. Maak de quiz zodra je kunt uitleggen waarom de ene waarde wel wordt omgezet en de andere niet.