0%

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:

Try it

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:

Try it

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:

Try it

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.