De for-instructie biedt een elegante en gestructureerde benadering om iteraties in programmering te construeren. Met zijn gecontroleerde aard vormt het een veilige manier om herhaalde handelingen uit te voeren, waarbij het risico op het vastlopen in een oneindige lus tot een minimum wordt beperkt.
Hoewel de for-constructie op uitmuntende wijze geschikt is voor veel iteratieve taken, is het essentieel om te erkennen dat het niet universeel toepasbaar is. Er zijn situaties waarin de veelzijdigheid van de while-instructie nog steeds onmisbaar is, waardoor het mogelijk blijft om iteraties te construeren die zich aanpassen aan specifieke programmeerbehoeften.
De kracht van de for-instructie ligt in zijn duidelijkheid en gecontroleerde karakter, waardoor het een waardevol instrument is bij het ontwerpen van gestructureerde en efficiënte code.
Een for-constructie ziet er als volgt uit:
for <variabele> in <collectie>:
<actie1>
<actie2>
….
<eerste actie na loop>
Tot op heden hebben we één van de meest fundamentele en veelzijdige collecties in de wereld van programmeren besproken: de string, ofwel tekst.
In eenvoudige bewoordingen is tekst simpelweg een reeks karakters die met elkaar zijn verbonden. Wanneer we dit vertalen naar computertaal, wordt dit principe verankerd in de definitie van een "string" als een geordende verzameling van karakters (char).
Een voorbeeld van string als collectie is "Banaan". Deze collectie bestaat uit "B", "a", "n", "a", "a", "n"
Andere vormen van collecties zijn:
range()
De range()-functie heeft verschillende toepassingen en syntaxes, maar in het algemeen wordt het gebruikt om een reeks opeenvolgende getallen te maken.
De algemen syntax van range is
range([start], stop, [step])
start (optioneel): Het startgetal van de reeks (standaard is 0).
stop: Het eindgetal (niet inbegrepen) van de reeks.
step (optioneel): De stapgrootte tussen de getallen in de reeks (standaard is 1).
range(4)
==> 0, 1, 2, 3
range(1,4)
==> 1, 2, 3
range(0,5,2)
==> 0, 2, 4
range(5,1,-1)
==> 5, 4, 3, 2
Tupple (Structuur wordt behandeld in deel 2 van de nascholing): (0, 1, 3, 7, 11) of ("N","O","S","W")
Lijsten (Structuur wordt in volgend hoofdstuk behandeld): [0, 1, 3, 7, 11] of ["N","O","S","W"]
Maak een script dat 5 getallen vraagt van de gebruiker. Het script geeft als output de som van de getallen. Het script mag maar één input() bevatten.
Mogelijke oplossing
Mogelijke oplossing 1:
#som gelijk stellen aan nul
som = 0
# lus maken die 5 keer doorlopen wordt
for i in range(5):
#input vragen
prompt = "Geef getal "+str(i+1)+": "
getal = float(input(prompt))
#getal optellen bij som
som = som + getal
# output
print("De som is",som)
Mogelijk oplossing 2:
#som gelijk stellen aan nul
som = 0
# lus maken die 5 keer doorlopen wordt
for i in range(1,6):
#input vragen
print ("Geef getal",i,":",end=' ')
getal = float(input())
#getal optellen bij som
som = som + getal
# output
print("De som is",som)
Schrijf een script dat van 10 tot 0 en dan “Houston, we have lift off” als output geeft.
Het aftellen gebeurt om de seconde.
Als algoritme ziet er als volgt uit
# maak lus die 11 x doorlopen wordt 10 --> 0
for tel in range(10,-1,-1):
# druk het getal
print(tel)
# wacht één seconde
# output: we have lift off
print("Houston, we have lift off!")
We starten met onze for-lus. We gebruiken hiervoor een range.
# maak lus die 11 x doorlopen wordt 10 --> 0
for tel in range(10,-1,-1):
We starten van getal 10 (inbegrepen)
We stoppen bij getal -1 (niet inbegrepen)
En we nemen stappen van -1, m.a.w. we tellen af
In de volgende stap gaan we tel geven als output en één seconde wachten
# druk het getal
print(tel)
# wacht één seconde
Om het script één seconde laten wachten moeten we een functie importeren die niet standaard in Python zit. De sleep( ) functie is een onderdeel van de time module. Deze kan aan het begin van het script geimporteerd worden met:
import time
De algeme syntax van een geimporteerde functie is:
<module>.<functie>(<parameters>)
De sleep functie heeft als parameter het aantal seconden dat het script moet wachten. In ons geval is dit één seconde
time.sleep(1)
In totaal levert dit:
import time
# maak lus die 11 x doorlopen wordt 10 --> 0
for tel in range(10,-1,-1):
# druk het getal
print(tel)
# wacht één seconde
time.sleep(1)
# output: we have lift off
print("Houston, we have lift off!")
for letter in "banaan":
print(letter)
Oplossing
In onderstaand script wordt bij de tweede doorloop de waarde van woord vervangen van appel naar peer.
woord = "appel"
for letter in woord:
print(letter)
if letter=="p":
woord = "peer"
Oplossing
De collectie veranderen na het starten van de lus heeft geen effect.
In onderstaand script wordt bij de tweede doorloop de waarde van woord vervangen van appel naar peer.
woord = "appel"
for letter in woord:
print(letter)
if letter=="p":
woord = "peer"
Oplossing
De collectie veranderen na het starten van de lus heeft geen effect.