Ga naar hoofdinhoud

3b Tekst naar getal

Met input() vraag je de gebruiker om iets te typen. Wat diegene typt, komt in een variabele:

naam = input("Hoe heet je? ")
print("Hoi", naam)

Uitvoer als je Sam typt:

Hoe heet je? Sam
Hoi Sam

Wat input() teruggeeft, is altijd tekst. Ook als iemand 15 typt, krijg je de tekst "15", met aanhalingstekens, zoals in les 2.

leeftijd = input("Hoe oud ben je? ")
print(leeftijd + 1)
Voorspel
Je typt 15. Wat gebeurt er?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.

Van tekst naar getal​

Met tekst kun je niet rekenen. int() maakt van tekst een geheel getal, en float() een kommagetal:

tekst = "15"
leeftijd = int(tekst)
print(leeftijd + 1)

prijs = float("2.50")
print(prijs * 3)

Uitvoer:

16
7.5

Met een echte vraag ziet dat er zo uit:

leeftijd = int(input("Hoe oud ben je? "))
print("Volgend jaar ben je", leeftijd + 1)

Uitvoer als je 15 typt:

Hoe oud ben je? 15
Volgend jaar ben je 16

input() levert de tekst, en int() maakt er meteen een getal van.


Er gaat iets mis​

Rekenen met tekst

leeftijd = "15"
print(leeftijd + 1)

Uitvoer:

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

leeftijd is nog tekst. Python kan tekst en een getal niet optellen. Maak er eerst een getal van: int(leeftijd) + 1.

Een kommagetal met int()

getal = int("12.5")

Uitvoer:

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

int() kan alleen hele getallen lezen. Gebruik float() voor een getal met een punt erin. Hoe je zo'n fout opvangt, zodat je programma niet stopt, leer je in Try en except.


Opdracht 3b.1: Dubbel zo oud​

In tekst staat een leeftijd als tekst. Print het dubbele van die leeftijd.

Verwachte uitvoer:

28
tekst = "14"

print(tekst * 2)
Klik hier voor een tip.

Druk eerst op Uitvoeren: tekst * 2 plakt de tekst twee keer achter elkaar. Maak er met int() eerst een getal van.

Klik hier voor de oplossing.
tekst = "14"

print(int(tekst) * 2)

Uitvoer:

28

Opdracht 3b.2: De rekening delen​

Drie vrienden delen een rekening. Het bedrag staat als tekst in bedrag. Print hoeveel ieder moet betalen.

Verwachte uitvoer:

8.5
bedrag = "25.50"
Klik hier voor een tip.

Het bedrag heeft een punt, dus int() werkt niet. Deel door 3 met /.

Klik hier voor de oplossing.
bedrag = "25.50"

print(float(bedrag) / 3)

Uitvoer:

8.5

Opdracht 3b.3: Een echte vraag​

Vraag met input() hoeveel stukjes pizza iemand wil, en print hoeveel pizza's van 8 stukjes dat zijn. Typ 12 als het programma erom vraagt.

Verwachte uitvoer bij 12:

Hoeveel stukjes wil je? 12
Dat is 1.5 pizza.
stukjes = input("Hoeveel stukjes wil je? ")
print("Dat is", stukjes, "pizza.")
Klik hier voor een tip.

Druk eerst op Uitvoeren: je ziet 12 staan, niet 1.5. Zet int() om de input(…), en deel door 8.

Klik hier voor de oplossing.
stukjes = int(input("Hoeveel stukjes wil je? "))
print("Dat is", stukjes / 8, "pizza.")

Uitvoer bij 12:

Hoeveel stukjes wil je? 12
Dat is 1.5 pizza.