-
Notifications
You must be signed in to change notification settings - Fork 0
input
Harry Broeders edited this page Feb 15, 2018
·
3 revisions
Hoe voorkom ik dat mijn programma rare dingen doet als in plaats van een getal een letter wordt ingetypt?
Als je in Python programma een getal inleest met input, dan wordt dit getal ingelezen als een string (tekst).
Er gebeuren vreemde dingen als je een string, die geen getal bevat, probeert om te zetten naar een integer (met behulp van de functie int).
#!Python
getal = int(input('Geef een geheel getal: '))
print('Eentje meer is', getal + 1)
Als je dit programma uitvoert en als invoer het getal 14 intypt dan verschijnt de volgende uitvoer:
#!none
Geef een geheel getal: 14
Eentje meer is 15
Als je dit programma uitvoert en als invoer het woord Hallo intypt dan verschijnt de volgende uitvoer:
#!none
Geef een geheel getal: Hallo
Traceback (most recent call last):
File "...\input_int_problem.py", line 1, in <module>
getal = int(input('Geef een geheel getal: '))
ValueError: invalid literal for int() with base 10: 'Hallo'
Deze fout kun je vrij eenvoudig afvangen door de exception die de functie int opwekt bij een fout af te vangen. Zie voor meer informatie de Python Tutorial.
#!Python
while True:
try:
getal = int(input('Geef een geheel getal: '))
break
except ValueError:
print('Error: dat was geen geheel getal. Probeer het opnieuw.')
print('Eentje meer is', getal + 1)
Als je dit programma uitvoert en als invoer het woord Hallo en daarna de waarde 14 intypt dan verschijnt de volgende uitvoer:
#!none
Geef een geheel getal: Hallo
Error: dat was geen geheel getal. Probeer het opnieuw.
Geef een geheel getal: 14
Eentje meer is 15