Ga naar hoofdinhoud

3b Tekst naar getal

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

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

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

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)

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 hoe oud de persoon is als hij twee keer zo oud is.

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:

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.")