Je hebt zojuist gezien hoe je een for-lus en een if-else-constructie kan combineren om een programma te maken dat voor elk getal in een reeks bepaalt of het even of oneven is. Hieronder kan je nog eens bekijken hoe dat werkt.
for i in range(10):
if i % 2 == 0:
print(f"{i} is een even getal.")
else:
print(f"{i} is een oneven getal.")
Wat gebeurt hier?
0, 1, 2, 3, 4, 5, 6, 7, 8, en 9.i de waarde 0.i % 2 == 0 (oftewel: is 0 deelbaar door 2?). Dit is waar, dus we voeren de code in het if-gedeelte uit, waardoor 0 is een even getal. op het scherm verschijnt.i de volgende waarde, namelijk 1.i % 2 == 0 (oftewel: is 1 deelbaar door 2?). Dit is niet waar, dus we voeren de code in het else-gedeelte uit, waardoor 1 is een oneven getal. op het scherm verschijnt.i de volgende waarde, namelijk 2.i % 2 == 0 (oftewel: is 2 deelbaar door 2?). Dit is waar, dus we voeren de code in het if-gedeelte uit, waardoor 2 is een even getal. op het scherm verschijnt.i de waarde 9.i % 2 == 0 (oftewel: is 9 deelbaar door 2?). Dit is niet waar, dus we voeren de code in het else-gedeelte uit, waardoor 9 is een oneven getal. op het scherm verschijnt.Je ziet dus op het scherm:
0 is een even getal.
1 is een oneven getal.
2 is een even getal.
3 is een oneven getal.
4 is een even getal.
5 is een oneven getal.
6 is een even getal.
7 is een oneven getal.
8 is een even getal.
9 is een oneven getal.
Schrijf met een for-lus en een if-(elif)-else-constructie een programma die voor de getallen van 0 tot en met 500 op het scherm afdrukt of er een 3 in het getal zit. Het programma moet dus de volgende output geven:
0 bevat geen 3.
1 bevat geen 3.
2 bevat geen 3.
3 bevat een 3.
4 bevat geen 3.
...
30 bevat een 3.
31 bevat een 3.
32 bevat een 3.
33 bevat een 3.
...
300 bevat een 3.
301 bevat een 3.
302 bevat een 3.
...
499 bevat geen 3.
500 bevat geen 3.
De getallen die we bekijken hebben 3 cijfers: een honderdtal, een tiental, en een eenheid. Bijvoorbeeld, in het getal 243 is het honderdtal 2, het tiental 4, en de eenheid 3. We kunnen deze cijfers afzonderlijk bekijken door gebruik te maken van gehele delingen (//) en de modulo-operator (%).
Waar kan je de eenheid van een getal vinden? Je kan dit doen door het getal modulo 10 te nemen.
| Invoer | → | Uitvoer | Reden |
|---|---|---|---|
12 % 10 |
→ | 2 |
12 gedeeld door 10 geeft een rest van 2. |
56 % 10 |
→ | 6 |
56 gedeeld door 10 geeft een rest van 6. |
243 % 10 |
→ | 3 |
243 gedeeld door 10 geeft een rest van 3. |
8 % 10 |
→ | 8 |
8 gedeeld door 10 geeft een rest van 8. |
Waar kan je het tiental van een getal vinden? Je kan dit doen door het getal eerst door 10 te delen (met gehele deling //) en daarna modulo 10 te nemen.
| Invoer | → | Uitvoer | Reden |
|---|---|---|---|
(456 // 10) % 10 |
→ | 5 |
456 gedeeld door 10 geeft 45 en daarvan nemen we modulo 10, wat 5 oplevert. |
(931 // 10) % 10 |
→ | 3 |
931 gedeeld door 10 geeft 93 en daarvan nemen we modulo 10, wat 3 oplevert. |
(83 // 10) % 10 |
→ | 8 |
83 gedeeld door 10 geeft 8 en daarvan nemen we modulo 10, wat 8 oplevert. |
(2 // 10) % 10 |
→ | 0 |
2 gedeeld door 10 geeft 0 en daarvan nemen we modulo 10, wat 0 oplevert. |
Waar kan je het honderdtal van een getal vinden? Je kan dit doen door het getal door 100 te delen (met gehele deling //).
Als de getallen meer dan 3 cijfers hadden, zouden we hier ook nog modulo 10 moeten nemen, maar aangezien wij enkel getallen met maximaal 3 cijfers bekijken, is dit niet nodig.
| Invoer | → | Uitvoer | Reden |
|---|---|---|---|
456 // 100 |
→ | 4 |
456 gedeeld door 100 geeft 4. |
931 // 100 |
→ | 9 |
931 gedeeld door 100 geeft 9. |
83 // 100 |
→ | 0 |
83 gedeeld door 100 geeft 0. |
2 // 100 |
→ | 0 |
2 gedeeld door 100 geeft 0. |
Je kan ook controleren of de substring "3" voorkomt in deze stringrepresentatie van het getal met het in-sleutelwoord.
| Invoer | → | Uitvoer | Reden |
|---|---|---|---|
"3" in "456" |
→ | False |
"3" komt niet voor in "456", dus de uitdrukking is niet waar. |
"3" in "931" |
→ | True |
"3" komt voor in "931", dus de uitdrukking is waar. |
"3" in "33" |
→ | True |
"3" komt voor in "33", dus de uitdrukking is waar. |
Zoals je in de voorbeelden ziet, werkt dit echter niet met integers (of floats), enkel met strings (en ook andere datatypen die je nog niet kent). Hier wordt niet verder op in gegaan, want dit is niet de bedoeling van deze oefening. Als je het wil gebruiken, moet je dus zelf bedenken hoe je dat in je programma verwerkt. Zo lang je het correct gebruikt, wordt je code goedgekeurd.