Vanaf deze les, hebben voorbeelden en programma-invoervensters extra knoppen: Open in the console en Visualiseer. Gebruik ze om het programma te verbeteren en te onderzoeken.
In het Hello, World!-programma zagen we dat Python in staat is om een tekenreeks (een stuk tekst) voor ons te herhalen. We hebben ook meerdere rekenvoorbeelden met getallen gezien. Getallen en tekenreeksen zijn fundamenteel verschillende soorten waarden, en wanneer je ze op de verkeerde manier in Python door elkaar gebruikt kan dat een foutmelding tot gevolg hebben:
Zoals je kunt zien, krijgen we een foutmelding waarin wordt aangegeven dat de twee argumenten van max
van verschillende types zijn. De foutmelding is een goede inleiding tot de rest van de les:
is een tekenreeks (Eng.: string), die door Python als"Hello, World!"
str
wordt aangemerkt. Een tekenreeks is een willekeurige rij van letters, cijfers, spaties, en leestekens; we zullen er meer over leren in les 7A.35
is een geheel getal (Eng.: integer). Gehele getallen worden door Python alsint
aangemerkt.
Een waarde van de verkeerde soort willen gebruiken is een veel voorkomende oorzaak van een fout in een computerprogramma. Het is als het drinken van een boterham: dat kan niet want je kunt alleen maar vloeibare dingen drinken, en een boterham is niet vloeibaar maar vast.
Je kunt het type van een waarde achterhalen door de functie type
aan te roepen:
(Alle Python-types zijn ook klassen (Eng.: classes).) Bovenstaand voorbeeld laat zien dat er twee verschillende types van getallen zijn in Python: het type int
van gehele getallen en het type float
van vlottende-kommagetallen (Eng.: floating-point numbers). Het type float
laat toe te rekenen met kommagetallen in Python. (Merk op dat kommagetallen in Python genoteerd worden met een punt in plaats van een komma.) Let wel: niet alle kommagetallen kunnen exact voorgesteld worden als een float
-waarde. Bij berekeningen met float
-waarden zullen er dan ook doorgaans afrondingen optreden; meer hierover in les 7B.
Je kunt float
-waarden mixen met int
-waarden; het resultaat is een float
.
Wat Python in feite doet wanneer je een float
met een int
mixt is dat het de int
omzet naar een float
en dan verder gaat met twee float
s.
1.2
veranderen in 1.5
in bovenstaand programma, wat is dan de eerste regel in de uitvoer?z
als 3.0
wordt afgedrukt.
- Wanneer we
x * y
berekenen dan mixen we eenint
en eenfloat
, maar Python behandelt die als tweefloat
s, waardoorz
eenfloat
wordt. - Om duidelijk te maken dat het om een
float
gaat, drukt Python de waarde vanz
af als3.0
in plaats van3
.
y
niet veranderd zijn.
Het is vaak noodzakelijk een waarde van het ene type om te zetten in een ander type. Zoals je aardbeien met een blender kunt omzetten van vast naar vloeibaar, kun je ook een waarde van het ene type soms omzetten naar een ander type daarbij gebruik makend van een typeconversiefunctie (Eng.: typecast function). Je schrijft de naam van het gewenste nieuwe type op dezelfde manier als bij de aanroep van een functie, bijvoorbeeld
x = float("3.4") print(x-1)zet de tekenreeks
"3.4"
om naar het kommagetal 3,4 en drukt dan af 2.4
. Zonder de typecast, zou het programma crashen, omdat het niet mogelijk is een getal van een tekenreeks af te trekken.
Soms staat Python toe dat je tekenreeksen en getallen combineert waarbij rekenkundige operatoren worden gebruikt. De opdracht drukt hotshots af. Daarbij is het een Python-regel dat wanneer je een tekenreeks s vermenigvuldigt met een geheel getal n dit betekent dat je n kopieën van s na elkaar plaatst. We zullen later zien dat de "optelling van twee tekenreeksen" ook gedefinieerd is in Python. |
Verschillende typeconversies gedragen zich verschillend:
- wanneer een
float
in eenint
wordt omgezet dan gaat het gedeelte na de komma verloren, bijvoorbeeld
isint(1.234)
1
, en
isint(-34.7)
-34
. - wanneer een
str
in eenint
wordt omgezet dan veroorzaakt dat een foutmelding wanneer de tekenreeks niet de precieze vorm heeft van een geheel getal. Bijvoorbeeld:
veroorzaakt een foutmelding.int("1.234")
- wanneer een
str
in eenfloat
wordt omgezet dan veroorzaakt dat een foutmelding wanneer de tekenreeks geen getal voorstelt. Bijvoorbeeld:float("boterham")
veroorzaakt een foutmelding.
Een typisch gebruik van type-omzetting dat we weldra zullen zien is het omzetten van invoer door de gebruiker, wat altijd een tekenreeks is, in een numerike vorm. Hier volgt een voorbeeld.
Hier volgt nog een voorbeeld om deze les af te sluiten.
Omdat er nu veel mogelijke editor-opdrachten zijn, zijn sommige verplaatst naar een knop Meer acties... |
Zodra je dit gedaan hebt, kun je doorgaan met de volgende les.