Werk herhalen met lussen · oefening
Kies begin, einde en stap van een range
In de vorige les gebruikte je één of twee argumenten bij range(). Met een derde argument bepaal je de afstand tussen de getallen.
Dit zijn de drie vormen:
range(stop)
range(start, stop)
range(start, stop, step)
start is het eerste getal en is standaard
0;stop is de grens die nooit meetelt;
step is het getal dat er elke keer bij komt en is standaard
1.
Kies een positieve stap
Deze range begint bij nul en telt er elke keer vijf bij op:
Dat levert 0, 5, 10, 15 en 20 op. Nog eens vijf erbij zou de uitgesloten stopwaarde 25 bereiken, dus de range eindigt.
Hetzelfde patroon kan door even getallen tellen:
Dit drukt 2, 4, 6, 8 en 10 af op afzonderlijke regels.
Tel terug met een negatieve stap
Een negatieve stap laat de getallen afnemen:
Deze range begint bij 3, trekt er elke keer 1 vanaf en stopt vóór 0. Ze levert dus 3, 2 en 1 op.
Moet het aftellen nul meenemen, zet de uitgesloten stop dan één stap verder:
range(3, -1, -1)
Dat levert 3, 2, 1 en 0 op.
De richting moet bij de stap passen. Een positieve stap gaat naar een hogere stopwaarde. Een negatieve stap gaat naar een lagere stopwaarde.
Als het begin in die richting al op of voorbij de stop ligt, is de range leeg. Zo leveren range(0), range(4, 4) en range(0, 5, -1) geen waarden op en maakt een lus erover nul rondes. Een stap van nul is iets anders: range(0, 5, 0) geeft een ValueError, omdat de stap het getal moet veranderen.
Wat drukt deze code af?
for value in range(10, 0, -3):
print(value)Welke aanroep telt terug vanaf 5 en neemt 0 mee?
Maak een range met een stapgrootte
De lus in de editor levert nu geen waarden op. Verander alleen de aanroep van range(), zodat die vanaf 10 met stappen van drie terugtelt en 10, 7, 4 en 1 oplevert.
Opdracht
Verander de aanroep range(0).
Begin bij
10.Stop vóór
0.Gebruik een stap van
-3.Laat het lusblok en de laatste regel
print(values)ongewijzigd.
De uiteindelijke lijst moet [10, 7, 4, 1] zijn.