Herken de oorspronkelijke tekst
Toon het type van raw_count op regel 1 met type(). Verwacht: <class 'str'>.
Een formulier kan het aantal deelnemers als tekst aanleveren, bijvoorbeeld "8". Voor een berekening heb je het getal acht nodig, niet alleen het teken dat erop lijkt. In deze les leer je die stap bewust maken en controleren met welk soort waarde je werkt.
Het type van een waarde bepaalt welke bewerkingen ermee mogelijk zijn. Je kent al tekst (str), gehele getallen (int) en getallen met een mogelijk decimaal deel (float). Aanhalingstekens maken van cijfers tekst: "8" is daarom een string en 8 een integer.
Met type(value) vraag je het type van een waarde op. Python toont dat bijvoorbeeld als <class 'str'>. Het woord class hoort bij die standaardweergave; voor nu hoef je alleen de typenaam te herkennen.
Een conversie zet een waarde om naar een ander type. Met int("8") krijg je een integer en met float("1.5") een float. De tekst moet bij de gewenste omzetting passen: voor dit voorbeeld staan er cijfers en eventueel een decimale punt in.
Een conversie levert een nieuwe waarde op. Bewaar die onder een naam wanneer je ermee verder wilt rekenen. De oorspronkelijke tekst verandert daardoor niet, zodat je die later nog kunt bekijken.
Dit voorbeeld verwerkt het aantal reizigers en de benodigde hoeveelheid drinkwater per reiziger. Bekijk eerst welk type de oorspronkelijke invoer heeft, en vergelijk daarna de drie resultaten.
raw_count = "8"
raw_liters = "1.50"
print(type(raw_count))
count = int(raw_count)
liters = float(raw_liters)
print(count + 1)
print(liters * count)
print("Reizigers: " + str(count))<class 'str'> 9 12.0 Reizigers: 8
Voor count + 1 moet count een getal zijn; dan betekent + optellen. De hoeveelheid per persoon wordt een float, zodat de vermenigvuldiging ook een float oplevert. Python bewaart daarbij niet de oorspronkelijke schrijfwijze van de tekst: "1.50" wordt als getal 1.5.
Met str(count) zet je het aantal terug om naar tekst. Dat is nodig wanneer je met + twee stukken tekst aan elkaar plakt. Een f-string uit de les over tekst met waarden regelt die tekstweergave voor je, maar hier voer je de conversie bewust zelf uit.
Twee strings kun je met + samenvoegen en twee getallen kun je ermee optellen. Een string en een integer direct combineren geeft daarentegen een fout.
count = 8
print("Reizigers: " + count)TypeError: can only concatenate str (not "int") to str
De TypeError vertelt dat deze bewerking niet werkt met de aangeboden typen. Het label is tekst, maar het aantal is een integer. Maak het aantal eerst tekst met str(count), of kies een f-string om het in het bericht in te vullen.
Kies de conversie op basis van wat je wilt doen. Om verder te rekenen zet je cijfertekst om naar een getal; om tekst samen te voegen zet je een getal om naar tekst. Alleen de foutmelding laten verdwijnen is niet genoeg: de nieuwe waarde moet passen bij je bedoeling.
De editor bevat een aantal en een prijs als tekst. Onderzoek het type, zet de waarden om voor de berekeningen en bouw vervolgens het gevraagde label. Houd de oorspronkelijke invoer beschikbaar onder de bestaande namen.
Toon het type van raw_count op regel 1 met type(). Verwacht: <class 'str'>.
Zet raw_count met int() om naar count. Toon count + 1 op regel 2: 13.
Maak price met float(raw_price). Toon price * count op regel 3: 30.0.
Plak str(count) aan "Aantal: " en toon op regel 4 Aantal: 12.
int(), float() en str() leveren een omgezette waarde op.Hierna maak je vergelijkingen die geen bedrag of tekst opleveren, maar waar of onwaar.
Voer je code uit en ontdek
wat je hebt gemaakt.
Je hoeft het niet in één keer goed te doen. Na het uitvoeren zie je hier welke stappen al kloppen.