Savvy handboek - Hoofdstuk 4

Page 1


4

De herhaling

Inhoudstafel

4.1

4.2

4.3

4.1 De voorwaardelijke herhaling

Interpreteer en experimenteer

Taak

1 Lees onderstaande programma’s.

2 Wat denk je dat er gebeurt? Wat denk je dat de uitvoer is?

3 Open de programma’s in Thonny, voer ze uit en controleer of je veronderstelling juist is.

Open Getal1.py

getal = int(input("Geef een getal in. ")) teller = 1 while teller <= getal: print(teller) teller = teller + 1

Open Omgekeerd1.py

getal = int(input("Geef een getal in. ")) while getal >= 1: print(getal) getal = getal - 1

Open Som3.py

som = 0

getal = float(input("Geef een getal in. ")) while getal != -1: som = som + getal getal = float(input("Geef een getal in. ")) print("De som is", som)

Taak

1 Open Som3.py

2 Pas het programma aan zodat het gemiddelde van de getallen wordt berekend.

3 Bewaar het programma onder de naam Gemiddelde1.py.

Taak

1 Maak een programma dat het product van de ingegeven getallen berekent tot -1 wordt ingelezen.

2 Bewaar het programma onder de naam Product1.py.

4.1.1 Hoe werkt het

Vaak moeten opdrachten worden herhaald. Dit kan gaan over een klein aantal herhalingen (bijvoorbeeld twee of drie keer) tot een massa herhalingen (bijvoorbeeld 100 keer). In de eerste situatie is het nog mogelijk om de opdrachten gewoon onder elkaar te plaatsen, maar wanneer je een opdracht 100 keer moet herhalen, is dat niet meer efficiënt. Daarom zijn er aparte instructies om een herhaling in een programma uit te werken. Een eerste soort herhaling is de voorwaardelijke herhaling.

while <voorwaarde>:

<opdrachtenblok1>

<opdrachtenblok3>

<opdrachtenblok1> wordt uitgevoerd zolang de <voorwaarde> voldaan is. Met andere woorden, als de <voorwaarde> waar is, wordt <opdrachtenblok1> uitgevoerd, waarna de voorwaarde opnieuw wordt gecontroleerd. Is de voorwaarde nog altijd waar, dan wordt <opdrachtenblok1> opnieuw uitgevoerd. Dit herhaalt zich tot de voorwaarde onwaar is, dan gaat het programma verder met <opdrachtenblok3>.

<opdrachtenblok3> wordt altijd uitgevoerd. Ze is onafhankelijk van de voorwaarde.

Aandachtspunten:

> Het kan zijn dat <opdrachtenblok1> nooit wordt uitgevoerd. Als de <voorwaarde> False is op het moment dat je aan de while-instructie komt, kom je nooit in de herhaling en wordt het opdrachtenblok niet uitgevoerd.

> Denk goed na bij het formuleren van je voorwaarde zodat er niet teveel of te weinig wordt herhaald.

> Er moet in het <opdrachtenblok1> een instructie zitten die ervoor zorgt dat de <voorwaarde> opnieuw moet worden getest, m.a.w. minstens één van de variabelen in de <voorwaarde> moet een andere waarde krijgen in het <opdrachtenblok1>. Is dit niet het geval, dan blijft de herhaling oneindig lang doorlopen. Dit noemt met een oneindige lus. Je kan de uitvoering van een programma onderbreken met Ctrl + C

4.1.2 De 20 km van Brussel voorwaardelijke herhaling

Probleemstelling

Je hebt jezelf een uitdaging gesteld dit jaar: je wil meedoen aan de 20 km van Brussel, een hardloopwedstrijd. Maak een programma dat berekent hoeveel dagen je moet trainen alvorens je de afstand van de loopwedstrijd kan lopen. Je maakt het programma uiteraard aanpasbaar zodat je het ook voor andere loopwedstrijden kan gebruiken. Geef het aantal km in dat je de eerste trainingsdag loopt. Ga ervan uit dat je elke volgende trainingsdag 10% meer loopt dan de dag voordien.

Analyse Invoer waarde type begin integer einde integer

Gegeven

De afstand die je aflegt is elke dag 10 % meer.

Verwerking

Zet het aantal dagen op 1.

Zolang je de eindafstand nog niet kan lopen, verhoog het aantal dagen en de gelopen afstand.

Uitvoer

waarde type

aantal_dagen integer

Algoritme

lees begin lees einde

aantal_dagen = 1

zolang begin < einde

begin = begin * 1,1

aantal_dagen = aantal_dagen + 1

schrijf aantal_dagen

Programma

# Bereken hoeveel dagen je moet trainen voor een loopwedstrijd #

# Lees het aantal km van de eerste dag en het gewenste aantal km in begin = int(input("Hoeveel km loop je bij de start, op dag 1? ")) einde = int(input("Hoeveel km wil je op het einde van de training kunnen lopen? "))

# Zet aantal dagen op 1

aantal_dagen = 1

# Bereken het aantal dagen dat je nodig hebt om je einddoel te bereiken while begin < einde: begin = begin * 1.1

aantal_dagen = aantal_dagen + 1

# Schrijf het aantal trainingsdagen uit print("Je moet", aantal_dagen, "dagen trainen om", round(begin,1), "km te kunnen lopen.")

Bewaar het programma onder de naam Lopen.py

Testen

begin einde

resultaat

5 20 Je moet 16 dagen trainen om 20,9 km te kunnen lopen.

3 16 Je moet 19 dagen trainen om 16,7 km te kunnen lopen.

Interpreteer en experimenteer

Taak

1 Open het programma Gemiddelde1.py

2 Dit programma geeft een foutmelding als het eerste getal dat ingegeven wordt -1 is.

3 Pas het programma aan zodat deze fout opgevangen wordt.

4 Bewaar het programma onder de naam Gemiddelde2.py.

# Bereken het gemiddelde van een willekeurig aantal getallen

#

# Initialiseer som en aantal op 0 aantal = 0

som = 0

# Invoer en berekening som getal = float(input("Geef het getal in. ")) while getal != -1: som = som + getal aantal = aantal + 1

getal = float(input("Geef het getal in. "))

# Berekening gemiddelde en uitvoer gemiddelde = som / aantal print("Het gemiddelde is", gemiddelde)

Taak

1 Open Dubbel1.py

2 Dit programma bevat een oneindige lus.

3 Pas het programma aan zodat het geen oneindige lus meer bevat. Je mag kiezen op welke manier je ervoor zorgt dat het programma stopt.

4 Bewaar het programma onder de naam Dubbel2.py

getal = int(input("Geef een getal in. ")) while getal > 0: getal = getal * 2 print(getal)

4.2 De begrensde herhaling

Interpreteer en experimenteer

Taak

1 Lees onderstaande programma’s.

2 Wat denk je dat er gebeurt? Wat denk je dat de uitvoer is?

3 Open de programma’s in Thonny, voer ze uit en controleer of je veronderstelling juist is.

Open Getal2.py.

getal = int(input("Geef een getal in. ")) for teller in range(getal): print(teller)

Open Omgekeerd2.py.

getal = int(input("Geef een getal in. ")) for teller in range(getal, 0, -1): print(teller)

Open Som4.py

som = 0

aantal = int(input("Geef een aantal in. ")) for teller in range(aantal): getal = float(input("Geef een getal in. ")) som = som + getal print("De som is", som)

Taak

1 Open Getal2.py

2 Zorg ervoor dat de getallen van 1 tot het ingegeven getal worden geprint.

3 Bewaar het programma onder de naam Getal3.py

Taak

1 Maak een programma dat het product van alle getallen tussen 1 en een ingelezen integer getal berekent, bijvoorbeeld getal = 5, product = 1 x 2 x 3 x 4 x 5.

2 Bewaar het programma onder de naam Product2.py

4.2.1 Hoe werkt het

Als je exact weet hoe vaak het opdrachtenblok moet worden herhaald, kan je de begrensde herhaling gebruiken.

begrensde herhaling

for <variabele> in <collectie>:

<opdrachtenblok1>

<opdrachtenblok3>

<opdrachtenblok1> wordt een aantal keer uitgevoerd. Het aantal keer wordt bepaald door de items in de <collectie>. Elke keer dat het <opdrachtenblok1> wordt uitgevoerd, krijgt de <variabele> een andere waarde, namelijk de waarde van het volgende item in de <collectie>. Je kan deze <variabele> gebruiken in het <opdrachtenblok1> en ook na de lus (herhaling) in <opdrachtenblok3>. De <variabele> moet niet bestaan bij aanvang van de for-lus. Bij aanvang van de for-lus wordt de <variabele> geïnitialiseerd op de eerste waarde in de <collectie>. Er zijn meerdere soorten collecties, in hetgeen volgt leer je er enkele kennen.

Na de herhaling gaat het programma verder met <opdrachtenblok3>.

Aandachtspunten:

> De waarde van de <variabele> wijzigt bij elke doorloop van de herhaling. Bijvoorbeeld: in for teller in range(5) krijgt de variabele teller achtereenvolgens de waarden 0, 1, 2, 3 en 4.

> De <variabele> heeft een waarde bij het beëindigen van de begrensde herhaling. Bijvoorbeeld: for teller in range(5); de waarde van teller na de herhaling is 4.

> Je kan een begrensde herhaling omzetten in een voorwaardelijke herhaling. De begrensde herhaling maakt het programma korter. Bijvoorbeeld:

getal = int(input("Geef een getal in. ")) teller = 1 while teller <= getal: print(teller) teller = teller + 1

getal = int(input("Geef een getal in. ")) for teller in range(getal): print(teller +1)

> Je kan een voorwaardelijke herhaling niet altijd omzetten naar een begrensde herhaling.

> Om de begrensde herhaling een juist aantal keren het opdrachtenblok te laten herhalen, is het belangrijk dat de collectie juist is opgesteld.

4.3 De functie range

Range is een functie die een reeks opeenvolgende getallen genereert.

range([<beginwaarde>,] <eindwaarde>[, <stap>])

Als je zelf geen <beginwaarde> opgeeft, dan is de <beginwaarde> standaard 0. Als er geen <stap>-waarde wordt opgegeven, dan is de <stap>-waarde standaard 1. De <eindwaarde> is niet inbegrepen in de gegenereerde reeks getallen.

Voorbeelden:

range(6) 0 1 2 3 4 5

range(4, 8) 4 5 6 7

range(0, 31, 3) 0 3 6 9 12 15 18 21 24 27 30

4.3.1 Een willekeurige waarde uit een range halen met de softwaremodule Random

choice(<range>) geeft als terugkeerwaarde een willekeurige waarde uit de <range>

De rij van Fibonacci

De rij van Fibonacci is genoemd naar Leonardo van Pisa, bijgenaamd Fibonacci. Hij schrijft over de rij in zijn boek Liber abaci, Boek over rekenen, uit 1202.

De eerste elementen van de rij zijn: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946 ...

De rij start met 1, 1, elk volgend element is de som van de twee voorgaande elementen.

Probleemstelling

Lees een positie in. Maak een programma met een zelfgedefinieerde functie fibonacci() die als parameter de positie van het getal dat je wil berekenen meekrijgt. De functie berekent het Fibonacci-getal dat op de ingegeven positie staat.

Analyse Invoer waarde type positie integer

Gegeven

Voor de rij van Fibonacci geldt het volgende:

F1 = 1

F2 = 1

F n = Fn-1 + Fn-2

Verwerking

(enkel van de functie) als positie is 1 of 2, resultaat is 1 anders

initialiseer Fibo1 en Fibo2 herhaal tot positie bereikt is bereken het volgende fibonacci-getal geef fibo 1 en fibo 2 de volgende waarden in de rij resultaat is volgende fibonacci-getal

Uitvoer

het Fibonacci-getal op de ingegeven positie

Algoritme

(enkel van de functie) functie fibonacci(index) als index == 1 of index == 2 dan retourneer(1) anders

fibo1 = 1 fibo2 = 1

voor teller van 3 tot index fibo_volgend = fibo1 + fibo2 fibo1 = fibo2 fibo2 = fibo_volgend retourneer(fibo_volgend)

Programma

# Bepaal het Fibonaccigetal op een bepaalde positie #

# Functie fibonacci def fibonacci(index): if index == 1 or index == 2: return(1) else:

# Bepaal de eerste twee getallen uit de rij

fibo1 = 1

fibo2 = 1

# Bereken de volgende getallen uit de rij tot het gewenste getal for teller in rage(3,index + 1):

fibo_volgend = fibo1 + fibo2

fibo1 = fibo2

fibo2 = fibo_volgend return(fibo_volgend)

# Hoofdprogramma

# Lees de positie in positie = int(input("Welk Fibonaccigetal wil je berekenen? "))

# Schrijf het berekende Fibonaccigetal print("Fibonaccigetal", positie, "=" , fibonaci(positie))

Bewaar het programma onder de naam Fibonacci1.py

Testen

Interpreteer en experimenteer

Met het nesten van herhalingen, m.a.w. een herhaling in een herhaling gebruiken, kan je complexere problemen compact programmeren.

Taak

1 Lees onderstaande programma’s.

2 Wat denk je dat er gebeurt? Wat denk je dat de uitvoer is?

3 Open de programma’s in Thonny, voer ze uit en controleer of je veronderstelling juist is.

4 Waarom staat print() buiten de for j-lus?

Open Sterren.py

for i in range(1, 6): for j in range(i): print("*", end=“”) print()

Open Paren1.py

for i in range(5): for j in range(i+1, 5): if not i == j: print("(", i, " ,", j, ")")

Taak

1 Open Paren1.py

2 Pas het programma aan zodat enkel koppels getallen die gelijk zijn, geprint worden. Bijvoorbeeld (1, 1), (2, 2) … en dit voor x tussen 1 en 10 en y tussen 1 en 10.

3 Bewaar het programma onder de naam Paren2.py.

4.4 De datastructuur list

Vaak moet je een hele reeks gegevens verwerken in een programma, gegevens die bij elkaar horen. Bijvoorbeeld: je wil de alfabetisch eerste naam van alle leden van een vereniging, je wil de gemiddelde leeftijd van de leden van die vereniging … In zo een geval ga je de namen, leeftijden … niet allemaal in een aparte variabele plaatsen, maar gebruik je een datastructuur om de gegevens in het geheugen op te slaan.

datastructuur ::= een specifieke manier om gegevens te organiseren en op te slaan, zodat ze efficiënt kunnen worden benaderd en aangepast onder één naam; het aantal elementen in een datastructuur ligt niet vast.

Datastructuren gebruiken kan de complexiteit van het algoritme aanzienlijk beïnvloeden; het algoritme wordt overzichtelijker en korter.

list ::= een datastructuur die een geordende lijst van elementen of waarden bevat.

> Eigenschappen van een list:

> Elk element in de list heeft zijn eigen datatype; er kunnen elementen van meerdere types in een list zitten.

> Elk element kan apart worden benaderd, verwerkt en gewijzigd.

> Elk van de elementen heeft een plaats in de list, aangeduid door de index; de index van het eerste element is 0.

Voorbeelden: boodschappenlijst = [“melk”, “kaas”, “brood”, “hesp”, “eieren”, “tomaten”, “sla”] leeftijden = [18, 17, 18 , 18, 19, 17, 18, 18, 18, 17, 18, 19] maanden = [“jan”, “feb”, “mrt”, “apr”, “mei”, “jun”, “jul”, “aug”, “sep”, “okt”, “nov”, “dec”] feestdagen= [1, 1, “Nieuwjaar”, 1, 5, “Dag van de arbeid”, 25, 12, “Kerstmis”] naam_puntenlijst =[[“Kevin”, 15],[“Camille”, 16],[“Emma”, 12], [“Hannah”, 17]] leeg = []

Interpreteer en experimenteer

Taak

1 Lees onderstaande programma’s.

2 Wat denk je dat er gebeurt? Wat denk je dat de uitvoer is?

3 Open de programma’s in Thonny, voer ze uit en controleer of je veronderstelling juist is.

Open Som5.py

getallen = [2, 5, 6, 8, 9, 6, 7, 5, 10, 4, 3, 7] som = 0 for getal in getallen: som = som + getal print("De som van de getallen is:", som)

Open Maanden1.py

maanden = ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"]

maandnr = (int(input("Geef het maandnummer in. ")) while maandnr != 0: print("Maand", maandnr, "=", maanden[maandnr - 1]) maandnr = int(input("Geef het maandnummer in. "))

Open Maanden2.py

maanden = ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"]

begin = (int(input("Geef het maandnummer van de beginmaand van een periode in. ")) eind = (int(input("Geef het maandnummer van de eindmaand van een periode in. ")) print("De opgegeven periode bevat de volgende maanden:", maanden[begin-1:eind])

Open Kwadraten.py.

getallen = [2, 5, 6, 8, 9, 6, 7, 5, 10, 4, 3, 7] kwadraten = [] for getal in getallen: kwadraten.append(getal ** 2) print("De kwadraten van de getallen zijn:", kwadraten)

Open Boodschappen1.py

boodschappenlijst = ["melk", "kaas", "brood", "hesp", "eieren", "tomaten”, "sla"] print("De boodschappenlijst bevat de volgende producten:") for item in boodschappenlijst: print(item) weg = input("Welk product wil je verwijderen van de boodschappenlijst? ") if weg in boodschappenlijst: boodschappenlijst.remove(weg) else: print("Dit product stond niet op de boodschappenlijst.") erbij = input("Welk product wil je toevoegen aan de boodschappenlijst? ") if erbij not in boodschappenlijst: boodschappenlijst.append(erbij) print("De nieuwe boodschappenlijst bevat de volgende producten:") for i in range(len(boodschappenlijst)): print(boodschappenlijst[i])

Open Vogels.py

# Een vergelijking van de vogeltellingen in mijn tuin vogels2022 = ["koolmees", "pimpelmees", "vink", "mus", "roodborstje"] vogels2023 = ["koolmees", "vink", "pimpelmees", "mus", "roodborstje"] vogels2024 = ["koolmees", "pimpelmees", "vink", "mus", "roodborstje"] vogels2025 = ["koolmees", "pimpelmees", "vink", "mus"]

if vogels2022 == vogels2023:

print("In mijn tuin zaten in 2022 dezelfde vogels als in 2023.")

else:

print("In mijn tuin zaten in 2022 niet dezelfde vogels als in 2023.")

if vogels2022 == vogels2024:

print("In mijn tuin zaten in 2022 dezelfde vogels als in 2024.")

else:

print("In mijn tuin zaten in 2022 niet dezelfde vogels als in 2024.")

if vogels2022 == vogels2025:

print("In mijn tuin zaten in 2022 dezelfde vogels als in 2025.")

else:

print("In mijn tuin zaten in 2022 niet dezelfde vogels als in 2025.")

if len(vogels2022) == len(vogels2025):

print("Er zaten in 2025 evenveel vogelsoorten in mijn tuin als in 2022, namelijk", len(vogels2022) + ".)

else:

print("Er zaten in 2025", len(vogels2025), "vogelsoorten in mijn tuin.")

Taak

1 Open Namen1.py.

2 Lees een willekeurige naam in.

3 Controleer of de naam in de lijst namen staat. Geef de juiste boodschap.

4 Bewaar het programma onder de naam Namen2.py.

4.4.1 List gebruiken

Een list printen

>>> print(boodschappenlijst) ['melk', 'kaas', 'brood', 'hesp', 'eieren', 'tomaten', 'sla']

Slicing: deel uit een list halen

<listnaam>[<start> : <stop> : <stap>]

Geen enkele parameter is verplicht.

<start>: de index van het eerste element van de deellijst of de index van het element dat je uit de lijst wil halen

<stop>: de deellijst stopt voor het element op deze index

<stap>: de stapwaarde om van het ene naar het andere element van de deellijst te gaan

Tip

Met een negatieve index tel je van achter naar voor. Met slicing maak je een deellijst (met andere woorden een nieuwe lijst).

Voorbeelden:

expressie resultaat

maanden[4] “mei” element op index 4

maanden[4 : 8]

maanden[10 :]

maanden[ : 2]

[“mei”, “jun”, “jul”, “aug”] maanden vanaf index 4 tot index 8 (index 8 niet inbegrepen)

[“nov”, “dec”] maanden vanaf index 10

[“jan”, “feb”] maanden tot index 2

maanden[-1] “dec”

maanden[-3] “okt”

maanden[ : -3]

[“jan”, “feb”, “mrt”, “apr”, “mei”, “jun”, “jul”, “aug”, “sep”] maanden[12] foutmelding, list index out of range maanden[ : ] [“jan”, “feb”, “mrt”, “apr”, “mei”, “jun”, “jul”, “aug”, “sep”, “okt”, “nov”, “dec”]

maanden[ : : -1]

[“dec”, “nov”, “okt”, “sep”, “aug”, “jul”, “jun”, “mei”, “apr”, “mrt”, “feb”, “jan”] de maanden in omgekeerde volgorde maanden[ : : 2] [“jan”, “mrt”, “mei”, “jul”, “sep”, “nov”] de stapgrootte is 2, de index wordt telkens met 2 verhoogd maanden[ : : -2] [“dec”, “okt”, “aug”, “jun”, “apr”, “feb”] negatieve index, je start achteraan; je gaat in stappen van 2 naam_puntenlijst[1][0] “Camille”

Dit geeft het eerste element van de list die het tweede element is van naam_puntenlijst. naam_puntenlijst[1][1] 16 naam_puntenlijst[0][1] 15

Een list aanpassen

<lijstnaam>[<index>] = <waarde> De waarde van het element op positie <index> wordt gewijzigd

<lijstnaam>.append(<waarde>) Er wordt een element toegevoegd achteraan in de lijst.

<lijstnaam>.insert(<index>, <waarde>) Er wordt een element toegevoegd aan de lijst op de positie <index>, de elementen op een hogere positie schuiven één positie naar rechts.

<lijstnaam>.remove(<waarde>) Het eerste voorkomen van het element <waarde> wordt verwijderd uit de lijst.

<lijstnaam>.pop(<index>) Het element op de positie <index> wordt verwijderd uit de lijst.

Voorbeelden:

expressie resultaat

boodschappenlijst[3] = “worst” boodschappenlijst = [“melk”, “kaas”, “brood”, “worst”, “eieren”, “tomaten”, “sla”]

leeftijden[8] = 19 leeftijden = [18, 17, 18 , 18, 19, 17, 18, 18, 19, 17, 18, 19] boodschappenlijst. append(“kool”)

boodschappenlijst = [“melk”, “kaas”, “brood”, “worst”, “eieren”, “tomaten”, “sla”, “kool”]

leeftijden.append(16) leeftijden = [18, 17, 18 , 18, 19, 17, 18, 18, 19, 17, 18, 19, 16] boodschappenlijst.insert(3, “boter”)

boodschappenlijst = [“melk”, “kaas”, “brood”, “boter”, “worst”, “eieren”, “tomaten”, “sla”, “kool”]

leeftijden.insert(0, 15) leeftijden = [15, 18, 17, 18 , 18, 19, 17, 18, 18, 19, 17, 18, 19, 16] boodschappenlijst. remove(“worst”)

boodschappenlijst = [“melk”, “kaas”, “brood”, “boter”, “eieren”, “tomaten”, “sla”, “kool”] leeftijden.remove(18) leeftijden = [15, 17, 18 , 18, 19, 17, 18, 18, 19, 17, 18, 19, 16] Het eerste voorkomen van 18 wordt verwijderd. boodschappenlijst.pop(6) boodschappenlijst = [“melk”, “kaas”, “brood”, “boter”, “eieren”, “tomaten”, “kool”] leeftijden.pop(2) leeftijden = [15, 17, 18, 19, 17, 18, 18, 19, 17, 18, 19, 16]

Operatoren op een

list

<list1> + <list2> concatenatie; voegt twee lijsten aan elkaar

<list> * <getal> dupliceert de lijst <list>een aantal keer

<waarde> in <list> controleert of de <waarde> als element voorkomt in de lijst

Voorbeelden: expressie resultaat

boodschappenlijst + [“water”, “thee”] boodschappenlijst = [“melk”, “kaas”, “brood”, “boter”, “eieren”, “tomaten”, “kool”, “water”, “thee”]

[1, 2] * 4 [1, 2, 1, 2, 1, 2, 1, 2] “bier” in boodschappenlijst False

Functies op list

Enkele functies die er bestaan voor een list.

len(<list>) geeft als terugkeerwaarde het aantal elementen in de lijst <list> min(<list>) geeft als terugkeerwaarde het kleinste element uit de lijst <list> max(<list>) geeft als terugkeerwaarde het grootste element uit de lijst <list>

sum(<list>) geeft als terugkeerwaarde de som van de elementen uit de lijst <list>

Voorbeelden:

expressie resultaat len(maanden) 12 len(leeftijden) 12 min(boodschappenlijst) “boter” max(leeftijden) 19 sum(leeftijden) 211

Een willekeurig element uit een list halen

module functie doel random random.choice(<list>) geeft als terugkeerwaarde een willekeurig element uit de <list>

Verschillend

Probleemstelling

Lees in een lijst een willekeurig aantal natuurlijke getallen in. Het inlezen stopt als een negatief getal wordt ingegeven. Maak een functie aantal_verschillend() die het aantal verschillende getallen in de lijst telt.

Analyse Invoer

waarde(n) type lijst_getallen list positie integer

Verwerking

(enkel verwerking van de functie die het aantal verschillende getallen bepaalt) zet aantal op 0 maak een lijst voor de verschillende getallen herhaal voor elk getal in de lijst controleer of het getal niet in de lijst met verschillende getallen zit verhoog het aantal met 1 voeg het getal toe aan de lijst met verschillende getallen

Algoritme

(enkel algoritme van de functie die het aantal verschillende getallen bepaalt) aantal = 0 verschillend = [] voor getal in getallen als verschillend == [] of getal niet in verschillend dan verschillend.voegtoe(getal) aantal = aantal + 1 retourneer(aantal)

Programma

# Bepaal het aantal verschillende getallen in een ingelezen lijst #

# Functie verschillend

def aantal_verschillend(getallen):

# Initialiseer aantal op 0

aantal = 0

# Initialiseer de lijst met verschillende getallen op leeg verschillend = []

# Tel het aantal verschillende getallen en vul de lijst verschillend for getal in getallen:

if verschillend == [] or getal not in verschillend: verschillend.append(getal)

aantal = aantal + 1 return(aantal)

# Hoofdprogramma

# Lees de getallen in lijst_getallen = [] getal = int(input("Geef een natuurlijk getal in, eindig met een negatief getal. ")) while getal >= 0: lijst_getallen.append(getal) getal = int(input("Geef een natuurlijk getal in, eindig met een negatief getal. "))

#Bepaal het aantal verschillende getallen en schrijf het uit print("Er zijn", aantal_verschillend(lijst_getallen), "verschillende getallen in de lijst.")

Bewaar het programma onder de naam Verschillend.py.

Testen

lijst van getallen

aantal verschillende getallen

4.5 Strings

Tot nu toe zijn er geen voorbeelden of oefeningen op strings gemaakt. Dit is omdat een string in feite een collectie van tekens is. Je kan het vergelijken met een list. Een groot deel van de bewerkingen die je op een list kan uitvoeren, kunnen ook voor strings worden gebruikt.

string ::= een collectie van tekens die onveranderbaar is; je kan in een string geen teken vervangen door een ander teken

Tip

Wil je in een string een teken wijzigen, dan moet je een nieuwe string aanmaken. In een list kan je wel elementen wijzigen zonder een nieuwe list aan te maken.

4.5.1 String gebruiken

Enkele voorbeeldstrings:

string1 = “Joepie, het is weekend.”

string2 = “1 2 3 4 5 6”

Deel uit een string halen

<stringnaam>[<start> : <stop>: <stap>]

Geen enkele parameter is verplicht.

<start>: de index van het eerste teken van de string, of de index van het teken dat je uit de string wil halen

<stop>: de string stopt voor het teken op deze index

<stap>: de stapwaarde om van het ene naar het andere teken voor de deelstring te gaan

Tip

Met een negatieve index tel je van achter naar voor.

Voorbeelden: expressie resultaat

string1[5] “e” teken op index 5

string1[8:11] “het”, tekens vanaf index 8 tot index 11 (index 11 niet inbegrepen)

string1[8:] “het is weekend.” tekens vanaf index 8

string1[:6] “Joepie” tekens tot index 6

string1[-1] “.”

string1[-3] “n”

string1[:-17] “Joepie”

string1[::-1] “.dnekeew si teh ,eipeoJ”

string2[::2] “123456“ de stapgrootte is 2, de index wordt telkens met 2 verhoogd, de spaties worden verwijderd

Stringoperatoren

Ook met teksten kunnen je bewerkingen uitvoeren.

<string1> + <string2> concatenatie; voegt twee strings aan elkaar tot één string <string> * <getal> dupliceert de <string> een aantal keer

<teken> in <string> controleert of het <teken> voorkomt in de <string>

Voorbeelden:

expressie resultaat

“kerst” + ”vakantie” “kerstvakantie” ”S” * 3 “SSS” 2 * “pa” “papa” “a” in “ABC” False “A” in “ABC” True

Stringfuncties en -methodes

Enkele functies die er bestaan voor een string.

len(<string>) geeft als terugkeerwaarde de lengte van de <string>

<string>.find(<zoekstring>) geeft de positie waar <zoekstring> voor het eerst voorkomt in <string>; het eerste karakter in de string staat op positie 0 <string>.rfind(<zoekstring>) geeft als resultaat de positie waar <zoekstring> voor het laatst voorkomt in <string>; komt <zoekstring> niet voor in de <string> dan is de terugkeerwaarde -1

<string>.upper() zet de <string> om in een string in hoofdletters

<string>.lower() string

<teken>.isalpha() geeft als terugkeerwaarde True als het teken een letter is en False als het teken iets anders is

<teken>.isalpha() geeft als terugkeerwaarde True als het teken een cijfer is en False als het teken iets anders is

<string>. split([<scheidingsteken>])

Voorbeelden:

splitst de <string> op in meerdere strings op basis van het opgegeven <scheidingsteken>, deze strings worden in een list geplaatst; indien geen teken wordt meegegeven, wordt standaard de spatie als scheidingsteken gebruikt; het scheidingsteken kan 1 karakter zijn of meerdere karakters

expressie resultaat len(string1) 23

string1.find(“e”) 2, string1.rfind(“e”) 19 string3 = “1 2 3 4 hoedje van hoedje van, 1 2 3 4 hoedje van papier” string3.find(“hoedje”) 8 string3.rfind(“hoedje”) 39 string4 = “Geslaagd!” hoofletters = string4.upper()

“GESLAAGD!” Let op: string4 is zelf niet veranderd. Er wordt een nieuwe string gemaakt. string4.lower() “geslaagd!”

string1.split() [“Joepie,”, ”het”, “is”, “weekend.”]

string2.split()

string5 = “2-GHI-458”

string5.split(“-“)

string6 = “5, 6 … 10, 11”

string6.split(“ … “)

[“1”, “2”, “3”, “4”, ”5”, “6”]

[“2”, “GHI”, ”458”]

[“5, 6”, “10, 11”]

Een willekeurige teken uit een string halen met de softwaremodule Random

random.choice(<string>) geeft als terugkeerwaarde een willekeurig teken uit de <string>

Palindroom

Probleemstelling

Een palindroom of spiegelwoord is een woord dat van links naar rechts gelezen precies hetzelfde is als andersom.

Voorbeelden zijn: lepel, kaak, pop, negen, redder, meetsysteem of de zin ‘De mooie zeeman nam Anna mee, zei oom Ed.’

Maak een functie palindroom die test of de parameter woord een palindroom is.

Analyse Invoer waarde type spiegelwoord string

Verwerking

(We gaan ervan uit dat het woord een palindroom is en testen of deze veronderstelling klopt. Enkel het algoritme van de functie wordt uitgewerkt.)

zet is_palindroom op True

herhaal voor de index van 0 tot de helft van de lengte van het woord als de letter op positie index is verschillend van de letter op positie (index + 1) vanachter te beginnen zet is_palindroom op False retourneer(is_palindroom)

Uitvoer

Een tekst die zegt of het woord een palindroom is of niet.

Algoritme

(Enkel het algoritme van de functie wordt uitgewerkt.)

is_palindroom = True voor i van 0 tot lengte(woord) // 2 als woord[i] != woord[-(i+1)] dan is_palindroom = False retourneer(is_palindroom)

Programma

# Bepaal of een woord een palindroom is #

# Functie palindroom def palindroom(woord):

# Ga ervan uit dat het een palindroom is is_palindroom = True

# Controleer of het een palindroom is door letters te vergelijken for i in range(len(woord)//2): if word[i] != woord[-(i+1)]: is_palindroom = False return(is_palindroom)

# Hoofdprogramma

# Lees een woord in spiegelwoord = input("Geef een woord in. ")

# Schrijf uit of het een palindroom is if palindroom(spiegelwoord): print(spiegelwoord, "is een palindroom. ") else: print(spiegelwoord, "is geen palindroom. ")

Bewaar het programma onder de naam Palindroom1.py.

Aandachtspunt:

We vergelijken de corresponderende letters: de eerste en de laatste, de tweede en de voorlaatste … en dit tot de helft van het woord bereikt is. Het heeft geen zin om verder te vergelijken want de letters na de helft zijn al aan bod gekomen.

Testen

spiegelwoord

leef

4.6 Toekenningsoperatoren

Voor de expressie getal = getal + 5 bestaat een verkorte notatie.

verkorte notatie

getal += 5

getal -= 5

getal *= 5

getal /= 5

getal //= 5

getal %= 5

getal **= 5

komt overeen met

getal = getal + 5

getal = getal - 5

getal = getal * 5

getal = getal / 5

getal = getal // 5

getal = getal % 5

getal = getal ** 5

woord1 += woord2 woord1 = woord1 + woord2 woord *= 3

woord = woord * 3

4.7

Oefeningen

Hieronder vind je oefeningen op de herhalingsstructuur. Om deze structuur goed onder de knie te krijgen, gebruik je voor alle berekeningen herhalingen en geen ingebouwde functies. Maak, indien zinvol, zelfgedefinieerde functies.

Gemakkelijk

Voorwaardelijke herhaling

1 Maak een programma dat twee natuurlijke getallen inleest. Het programma drukt alle even getallen af, vanaf het kleinste van de twee getallen tot en met het grootste.

Bewaar het programma onder de naam EvenGrens1.py

2 Maak een programma dat een natuurlijk getal inleest groter dan 1 en controleert of het een priemgetal is. Een priemgetal is een getal dat enkel deelbaar is door zichzelf en door 1.

Maak een zelfgedefinieerde functie priemgetal() om de controle uit te voeren. Het resultaat van de functie is True als het een priemgetal is en False als het geen priemgetal is.

Bewaar het programma onder de naam Priemgetal.py

3 Maak een programma dat de woorden van een zin opvraagt en ondertussen de zin vormt. Elk woord wordt apart opgevraagd. Het programma houdt bij hoeveel woorden die zin telt. Je eindigt de zin met een “.”.

Zowel de zin als het aantal woorden in de zin worden afgedrukt.

Bewaar het programma onder de naam Zin.py.

Begrensde herhaling en range

4

Maak een programma dat 100 maal de strafregel “Ik mag code niet kopiëren van een ander of laten genereren door AI.” print.

Bewaar het programma onder de naam Straf.py

5 Maak een programma dat een natuurlijk getal inleest en alle delers van het getal print. De eerste deler is 1 en de laatste is het getal zelf.

Bewaar het programma onder de naam Delers.py.

6 Maak een programma dat twee natuurlijke getallen inleest. Het programma drukt alle even getallen af, vanaf het kleinste van de twee getallen tot en met het grootste.

Bewaar het programma onder de naam EvenGrens2.py

7 Maak een programma dat van een willekeurig natuurlijk getal een vermenigvuldigingstafel tot 10 afdrukt.

Bewaar het programma onder de naam Vermenigvuldiging1.py.

8 Maak een programma met daarin een zelfgedefinieerde functie faculteit() die de faculteit van een positief natuurlijk getal berekent.

Schrijf als resultaat bijvoorbeeld 5! = 120

Let op:

er staat geen spatie tussen het getal en “!”. Denk aan hetgeen je geleerd hebt van strings om dit juist te noteren.

Bewaar het programma onder de naam Faculteit1.py

9 Maak een programma met daarin een zelfgedefinieerde functie keerom(). In deze functie wordt een begrensde herhaling en een range gebruikt om de inhoud van een string om te keren. Je mag de functie “len” gebruiken om de lengte van de string te bepalen.

Bijvoorbeeld: keerom(“goedendag”) = “gadnedeog”

Test het programma door de functie te gebruiken om te controleren of een ingelezen woord een palindroom is of niet.

Bewaar het programma onder de naam Palindroom2.py.

10 Maak een programma om een natuurlijk getal om te zetten in een binair getal.

vb.

Bijvoorbeeld: getal = 45 werkwijze: deel het getal telkens door 2 en schrijf de rest op tot het quotiënt 0 is 45 rest na deling door 2

binair getal = 101101

Print het binair getal naast elkaar uit.

Bewaar het programma onder de naam Binair.py.

Begrensde herhaling en list

11 Maak een programma dat met behulp van een begrensde herhaling berekent hoeveel regen er in totaal gevallen is gedurende een week en hoeveel gemiddeld per dag.

Neem in het programma een list op die de hoeveelheid regen (in mm) bevat die per dag gevallen is. De output bevat een overzicht van de gevallen regen per dag, de totale regenval en de gemiddelde regenval van de week. Rond de gemiddelde regenval af tot op 1 cijfer na de komma.

vb.

Bijvoorbeeld: regen_deze_week = [10, 1, 30, 0, 21, 19, 50]

dag 1: 10 mm

dag 2: 1 mm

dag 3: 30 mm

dag 4: 0 mm

dag 5: 21 mm

dag 6: 19 mm

dag 7: 50 mm

totale hoeveelheid regen gevallen deze week: 131 mm gemiddelde hoeveelheid regen per dag: 18,7 mm

Bewaar het programma onder de naam regen.py

Gemakkelijk

Begrensde herhaling en string

12 Maak een programma waarin je een woord ingeeft en de letters van het woord onder elkaar print. Bewaar het programma onder de naam OnderElkaar.py.

13 Maak een programma dat een zelfgedefinieerde functie lengte() bevat. Deze functie berekent met behulp van een herhaling hoe lang een string is.

Bewaar het programma onder de naam Lengte.py

14 Maak een programma met daarin een zelfgedefinieerde functie keerom(). In deze functie wordt een begrensde herhaling gebruikt om de inhoud van een string om te keren. De collectie is hier de string.

vb.

Bijvoorbeeld: keerom(“goedendag”) = “gadnedeog” Test het programma door de functie te gebruiken om te controleren of een ingelezen woord een palindroom is of niet.

Bewaar het programma onder de naam Palindroom3.py

15 Maak een programma dat bepaalt hoeveel letters twee ingegeven woorden gemeenschappelijk hebben. Maak een string letters_gemeen waarin je de tekens opneemt die in beide woorden voorkomen. Elke gemeenschappelijke letter komt maar één keer voor in letters_gemeen

vb.

Voorbeelden: invoer uitvoer woord1 = “terzake” woord2 = “goedendag”

De woorden hebben geen letters gemeen.

De woorden delen de volgende letters: ea woord1 = “hallo” woord2 = “winter”

Bewaar het bestand onder de naam LettersGemeen.py.

Gemiddeld

Voorwaardelijke herhaling

16 Maak een programma dat berekent hoe lang het duurt voor een kapitaal uitgezet aan een bepaalde intrestvoet is verdubbeld. Schrijf het aantal jaren en het eindbedrag afgerond tot op 2 cijfers na de komma uit.

Bewaar het programma onder de naam Intrest3.py. Geef het beginkapitaal van de lening in. 1000 Geef de intrestvoet in? 5

vb.

Na 15 jaar is het kapitaal verdubbeld. Het eindkapitaal bedraagt 20789.28 EUR.

17 Als je een pingpongbal op de grond smijt of laat vallen, blijft die nog een tijdje botsen. Maak een programma dat berekent hoeveel keer de pingpongbal nog botst alvorens stil te vallen. Je geeft de hoogte (cm) in vanwaar je de pingpongbal laat vallen. Na elke bots komt de pingpongbal minder hoog: telkens nog maar 75% van de vorige hoogte. De pingpongbal stopt met botsen als de hoogte niet meer dan 0.1 mm is.

Bewaar het programma onder de naam PingPong.py

18 Om de grootste gemene deler van twee getallen te berekenen, kan je het algoritme van Euclides gebruiken. Kort samengevat zegt het algoritme:

De ggd van twee getallen kan je als volgt berekenen:

> Noem het grootste van de twee getallen A en het andere B,

> bepaal de rest R bij deling van A door B,

> is R nul, dan is B de ggd,

> indien R niet nul is, herhaal het algoritme dan voor B en de rest R.

Maak een programma met daarin een zelfgedefinieerde functie ggd() die de ggd van twee getallen berekent met het algoritme van Euclides.

Bewaar het programma onder de naam Ggd1.py

19 Breid het programma Hoger_lager1.py uit. Je moet een willekeurig getal raden tussen 1 en 50. Bij elke poging geeft het programma aan of het te zoeken getal hoger of lager is dan het getal dat je hebt ingegeven. Als je het getal hebt geraden, verschijnt een tekst met het aantal pogingen dat je nodig had om het getal te raden.

Tip

Om een efficiënt programma te maken, moet je de functie hoger_lager() aanpassen.

Bewaar het programma onder de naam Hoger_lager2.py.

20 Programmeer het spelletje ‘letterslang’. Een letterslang is een spelletje waarbij ieder om beurt woorden van een bepaalde categorie (bijvoorbeeld dieren) moet bedenken. Elk woord moet beginnen met de laatste letter van het woord gegeven door je voorganger.

Bijvoorbeeld:

> … vb.

Categorie: dieren

> eerste woord: aap

> tweede woord: paard

> derde woord: dikdik

Het programma leest eerst twee woorden in en blijft woorden lezen zolang de voorwaarde voldaan is. De juiste woorden worden opgeslagen in een list. Het programma telt hoeveel juiste woorden zijn ingegeven. Als resultaat wordt de list met juiste woorden geprint en het aantal juiste woorden.

vb.

woord: beer

volgend woord: ree volgend woord: ezel volgend woord: leeuw

volgend woord: walrus volgend woord: slang volgend woord: geit

volgend woord: gans ['beer', 'ree', 'ezel', 'leeuw', 'walrus', 'slang', 'geit']

Je hebt 7 juiste woorden ingegeven.

Bewaar het programma onder de naam Letterslang.py

Begrensde herhaling en range

21 Maak een programma dat een reeks natuurlijke getallen opsplitst in twee lijsten. Een lijst met even getallen en een lijst met oneven getallen. Start het programma met eerst het aantal getallen en vervolgens de getallen in te lezen. Als uitvoer krijg je de lijst met even en de lijst met oneven getallen.

vb.

aantal getallen: 5

getal: 5

getal: 69

getal: 3

getal: 8

getal: 14

[8, 14]

[5, 69, 3]

Bewaar het programma onder de naam Verdeel.py.

22 Maak een programma dat van de getallen 1 tot 10 een vermenigvuldigingstafel tot 10 maakt en deze bewaart in een list van list1. Elk element van de list is een list met de vermenigvuldigingstafel van één getal.

vb.

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

[4, 8, 12, 16, 20, 24, 28, 32, 36, 40]

[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

[6, 12, 18, 24, 30, 36, 42, 48, 54, 60]

[7, 14, 21, 28, 35, 42, 49, 56, 63, 70]

[8, 16, 24, 32, 40, 48, 56, 64, 72, 80]

[9, 18, 27, 36, 45, 54, 63, 72, 81, 90]

[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

Bewaar het programma onder de naam Vermenigvuldiging2.py

Begrensde herhaling en list

23 Maak een programma om een willekeurig afgerond bedrag in euro met het kleinste aantal briefjes en munten uit te betalen. Maak een zelfgedefinieerde functie betalen() voor het bepalen van de nodige briefjes en munten.

Welk geldbedrag wil je uitbetalen? 1687

1 x 2 EUR vb.

3 x 500 EUR

1 x 100 EUR

1 x 50 EUR

1 x 20 EUR

1 x 10 EUR

1 x 5 EUR

Bewaar het programma onder de naam GeldBetalen.py.

Begrensde herhaling en string

24 Maak een programma dat een string inleest en afdrukt hoeveel verschillende klinkers er in de string zitten. Zet eerst de string om naar kleine letters, zodat er geen onderscheid gemaakt wordt tussen klinkers in kleine letter en klinkers in hoofdletters.

woord: goedendag

aantal verschillende klinkers: 3 vb.

Bewaar het programma onder de naam Klinkers.py.

25 Om namen correct te sorteren mogen er onder andere geen spaties in staan. Maak een programma dat een naam inleest en vervolgens alle spaties uit die naam verwijdert. De naam wordt in hoofdletters afgedrukt.

naam: Van der Spiegel

VANDERSPIEGEL vb.

Bewaar het programma onder de naam Spatie.py

gevorderd

Je mag in onderstaande oefeningen de functie “len” gebruiken.

26 Maak een programma dat het algoritme van de Zeef van Eratostenes gebruikt om alle priemgetallen kleiner dan een getal te genereren.

Dit algoritme vindt alle priemgetallen tot een gegeven limiet n door systematisch veelvouden van gevonden priemgetallen te elimineren:

Werkwijze:

1 Maak een lijst van alle getallen van 0 tot en met n en markeer ze als “mogelijk priem”.

2 Begin bij het eerste priemgetal 2 en markeer alle veelvouden als niet-priem. Het eerste veelvoud dat je controleert, is het kwadraat van het getal want alle kleinere veelvouden zijn al gemarkeerd als niet-priem.

3 Ga naar het volgende niet-gemarkeerde getal en herhaal stap 2.

4 Herhaal dit tot je voorbij bent. natuurlijk getal: 50 alle priemgetallen tot en met 50: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

vb.

Werk het algoritme uit in een zelfgedefinieerde functie zeef()

Bewaar dit programma onder de naam Zeef.py

gevorderd

27 De stelling van Zeckendorf zegt dat ieder positief geheel getal op unieke wijze geschreven kan worden als de som van een of meer elkaar niet opvolgende getallen uit de rij van Fibonacci. Maak een programma dat een natuurlijk getal schrijft als een som van een of meer elkaar niet opvolgende getallen uit de rij van Fibonacci. Dit programma bevat twee functies:

> Een eerste functie fibonaccigetallen() die een lijst maakt,

vb.

bijvoorbeeld: fib met alle Fibonaccigetallen kleiner dan n n is de parameter van de functie.

De lijst start met fib = [1, 2]. Deze lijst is de terugkeerwaarde van de functie.

> Een tweede functie zeckendorf() die de Fibonaccigetallen die de som vormen, in een lijst plaatst. Deze lijst is de terugkeerwaarde van de functie. De parameter van de functie is het getal waarvoor je de Zeckendorf voorstelling wil bepalen. In deze functie wordt de functie fibonaccigetallen() opgeroepen.

Print de bekomen lijst van Fibonaccigetallen uit als controle. De lijst van Fibonaccigetallen wordt van groot naar klein doorlopen om de som te vormen.

vb.

natuurlijk getal: 1526

[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]

Zeckendorf-voorstelling van 1526 = 5 + 13 + 144 + 377 + 987

Bewaar het programma onder de naam Zeckendorf.py

28 De leraren van het basisonderwijs zouden graag een eenvoudig programma krijgen waarmee ze hun leerlingen kunnen laten oefenen op rekenvaardigheid (optellen en aftrekken). Het programma zou heel flexibel moeten zijn. De leraar kan ingeven tot welk getal de leerlingen moeten kunnen rekenen.

Bijvoorbeeld: ze moeten kunnen optellen en aftrekken van 0 tot 20.

De leraar kan ingeven hoeveel oefeningen de leerlingen krijgen.

Het programma genereert zelf de oefeningen, zowel de getallen als de soort bewerking wordt gegeneerd. Er worden enkel natuurlijke getallen gegenereerd.

Hanteer voor de bewerkingen volgende afspraak: 1 = optellen, 2 = aftrekken.

Deel het programma op in deelproblemen. Werk elk deelprobleem uit met een zelfgedefinieerde functie.

Als de leerlingen een foute berekening maken, verschijnt het juiste antwoord. Op het einde verschijnt het totaal aantal juiste oefeningen die de leerling gemaakt heeft.

vb.

maximum getal voor berekeningen: 20 aantal oefeningen: 5

16 – 7 = 9

13 – 20 = 5

fout: 13 – 20 = -7

19 + 15 = 34

3 – 16 = -13

19 – 3 = 16 Je hebt 4 oefeningen juist.

Bewaar het programma onder de naam Rekenoef.py

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.