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.

Voorbeeld van combinatie van een for-lus met een if-else-constructie
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?

  • De genereert de getallen 0, 1, 2, 3, 4, 5, 6, 7, 8, en 9.
  • In het begin krijgt i de waarde 0.
  • We controleren of 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.
  • Daarna krijgt i de volgende waarde, namelijk 1.
  • We controleren of 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.
  • Daarna krijgt i de volgende waarde, namelijk 2.
  • We controleren of 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.
  • ...
  • Als laatste krijgt i de waarde 9.
  • We controleren of 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.
  • Nu zijn er geen getallen meer in de reeks die door is gegenereerd, dus stopt de lus.

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.



Opdracht

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.


Tip: hoe check je of er een 3 in het getal zit?


Wiskundige manier

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 (%).

Eenheden

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.

Tientallen

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.

Honderdtallen

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.

Programmeer-taal manier (korter, maar gebruikt iets wat je nog niet kent)

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.