Beetje Coderen

Les 2 · Module 1 · Fundament (alleen Python)

Invoer en typen omzetten

Je programma vraagt iets aan de gebruiker met input() en rekent ermee na int() en float().

⏱ 45–60 minuten leestijd + oefenen

🎯 Na deze les kun je

  • invoer vragen met input()
  • tekst omzetten naar int en float
  • een ValueError herkennen en uitleggen

In les 1 stonden alle gegevens vast in je code: brood = 2.89. Handig om te oefenen, maar een echt programma werkt met gegevens van de gebruiker. Een fooi-calculator moet weten wat de rekening is, een rekenmachine welke getallen je wilt optellen. In deze les vraag je invoer met input() en leer je waarom je die invoer bijna altijd eerst moet omzetten voordat je ermee kunt rekenen.

Invoer vragen met input()

naam = input("Hoe heet je? ")
print(f"Hoi {naam}!")

Als je dit uitvoert, stopt het programma bij input() en wacht het tot je iets typt en op Enter drukt:

Hoe heet je? Sam
Hoi Sam!

De tekst tussen de haakjes is de prompt: de vraag die op het scherm komt. Zet er een spatie aan het eind, anders plakt je antwoord tegen de vraag aan.

input() geeft altijd tekst

Voorspel eerst: wat print dit programma als je 17 intypt?

leeftijd = input("Hoe oud ben je? ")
print(leeftijd + 1)

Je krijgt een foutmelding:

TypeError: can only concatenate str (not "int") to str

Wat je ook typt, input() geeft altijd een string (str) terug. "17" is voor Python geen getal maar twee tekens: een 1 en een 7. En tekst plus een getal kan niet. Controleer het zelf met type():

leeftijd = "17"          # dit is wat input() je zou geven
print(type(leeftijd))
<class 'str'>

Omzetten met int(), float() en str()

Om te rekenen zet je de tekst om naar een getal. Dat heet typeconversie (type conversion).

Functie Maakt van Voorbeeld Resultaat
int() tekst of kommagetal → geheel getal int("17") 17
float() tekst of geheel getal → kommagetal float("12.5") 12.5
str() getal → tekst str(17) "17"
leeftijd = int("17")
print(leeftijd + 1)
print(float("12.5") * 2)
print(str(3) + "3")
print(int(9.99))
18
25.0
33
9

Let op de laatste regel: int(9.99) geeft 9. Python rondt niet af, het hakt de decimalen eraf. Wil je afronden, gebruik dan round(9.99).

Meestal combineer je input() en de omzetting in één regel:

bedrag = float(input("Bedrag: "))

Lees dit van binnen naar buiten: eerst vraagt input() de tekst, daarna maakt float() er een getal van, en dat getal komt in bedrag.

Uitgewerkt voorbeeld: kilometers naar mijlen

Lees het programma en voorspel de uitvoer als de gebruiker 42.195 intypt.

km = float(input("Afstand in km: "))
mijl = km / 1.609344
print(f"{km} km is {mijl:.1f} mijl")
Afstand in km: 42.195
42.195 km is 26.2 mijl

Stap voor stap:

  1. input() geeft de tekst "42.195".
  2. float() maakt er het getal 42.195 van.
  3. De deling geeft 26.218...; :.1f in de f-string toont één decimaal.

Typische fouten

ValueError bij een komma

In Nederland schrijven we 12,50. Python verwacht een punt:

bedrag = float("12,50")
ValueError: could not convert string to float: '12,50'

Een ValueError betekent: het type klopt (het is een string), maar de inhoud is niet om te zetten. Hetzelfde krijg je bij int("12.5") of int("twaalf"). Een eenvoudige oplossing is de komma eerst vervangen door een punt:

tekst = "12,50"
bedrag = float(tekst.replace(",", "."))
print(bedrag)
12.5

Wat .replace() precies doet, leer je in les 7. In les 13 leer je hoe je een ValueError netjes opvangt in plaats van het programma te laten crashen.

Vergeten om te zetten

Zonder omzetting kan Python soms wél iets doen, maar niet wat je bedoelt:

aantal = "3"
print(aantal * 2)
33

Een string keer 2 herhaalt de tekst. Geen foutmelding, wel een fout antwoord. Zulke logische fouten zijn verraderlijk: controleer je uitvoer altijd met een voorbeeld waarvan je het antwoord al weet.

int(input(...)) crasht zodra de gebruiker iets anders dan een geheel getal typt. Spaties eromheen zijn geen probleem (int(" 17 ") werkt), maar "17 jaar" wel. Vraag in de prompt daarom duidelijk wat je verwacht, bijvoorbeeld "Leeftijd (in jaren): ".

Oefenen

Oefening 1. Voorspel de uitvoer van elk van deze regels, en controleer daarna in de console.

print(int("7") + 3)
print("7" + "3")
print(float("2") / 4)
print(int(3.8))
Modelantwoord oefening 1
10
73
0.5
3

"7" + "3" plakt twee strings aan elkaar. int(3.8) hakt af tot 3, het rondt niet af.

Oefening 2. Schrijf een programma dat het geboortejaar vraagt en de leeftijd aan het eind van 2026 print.

Modelantwoord oefening 2
jaar = int(input("In welk jaar ben je geboren? "))
leeftijd = 2026 - jaar
print(f"Eind 2026 ben je {leeftijd} jaar.")

Oefening 3. Een gebruiker typt bij prijs = float(input("Prijs: ")) het antwoord 4,95. Wat gebeurt er, en hoe los je het op?

Modelantwoord oefening 3

Je krijgt ValueError: could not convert string to float: '4,95'. Vervang eerst de komma:

prijs = float(input("Prijs: ").replace(",", "."))

Lab: fooi-calculator

  1. Start het lab en maak een bestand fooi.py.

  2. Vraag het bedrag van de rekening (kommagetal) en het fooipercentage (geheel getal).

  3. Accepteer bij het bedrag ook een komma, zoals 45,80.

  4. Bereken de fooi en het totaal en print precies:

    Rekening: € 45.80
    Fooi 10%: € 4.58
    Totaal:   € 50.38
    
  5. Test met minstens twee eigen bedragen waarvan je het antwoord zelf hebt uitgerekend.

  6. Controleer met beetje check concepten-les2.

Samenvatting

  • input("vraag ") wacht op de gebruiker en geeft altijd een string terug.
  • Met int(), float() en str() zet je waarden om naar een ander type.
  • int() hakt decimalen af; round() rondt af.
  • Een ValueError betekent dat de inhoud van de tekst niet om te zetten is, zoals "12,50" of "twaalf".
  • Controleer je uitvoer met een voorbeeld waarvan je het antwoord kent: niet elke fout geeft een foutmelding.

In les 3 laat je je programma beslissingen nemen: andere uitvoer afhankelijk van de invoer, met if.

Lab

Fooi-calculator die bedrag en percentage vraagt

🔒 Het live lab hoort bij de volledige cursus. Met één aankoop (€ 29,00, eenmalig) krijg je alle lessen, de live labs en het certificaat. Geen abonnement. Je kunt dit lab altijd gratis lokaal met Docker doen.

Cursus kopen en verdergaan

Klaar? Controleer je werk met:

$ beetje check concepten-les2

📝 Quiz: invoer en typen omzetten

5 vragen · 70% nodig om te slagen

1. De gebruiker typt `25` bij `x = input("Getal: ")`. Welk type heeft x?
2. Wat is de uitkomst van `int(7.9)`?
3. Welke regel geeft een ValueError?
4. Wat print `print("5" * 3)`?
5. Je wilt de invoer meteen als kommagetal gebruiken. Welke regel is juist?