Arbeit mit Schleifen wiederholen · Übung
Wähle Start, Ende und Schrittweite
Die vorherige Lektion verwendete ein oder zwei Argumente mit range(). Mit einem dritten Argument bestimmst du den Abstand zwischen den Zahlen.
Das sind die drei Formen:
range(stop)
range(start, stop)
range(start, stop, step)
start ist die erste Zahl und hat den Standardwert
0;stop ist die Grenze, die nie eingeschlossen ist;
step ist die Zahl, die jedes Mal addiert wird, und hat den Standardwert
1.
Wähle eine positive Schrittweite
Dieser Bereich beginnt bei null und addiert jedes Mal fünf:
Er erzeugt 0, 5, 10, 15 und 20. Eine weitere Addition von fünf würde den ausgeschlossenen Endwert 25 erreichen. Deshalb endet der Bereich.
Dasselbe Muster kann gerade Zahlen durchlaufen:
Das gibt 2, 4, 6, 8 und 10 in getrennten Zeilen aus.
Zähle mit einer negativen Schrittweite rückwärts
Eine negative Schrittweite lässt die Zahlen kleiner werden:
Dieser Bereich beginnt bei 3, zieht jedes Mal 1 ab und stoppt vor 0. Er erzeugt deshalb 3, 2 und 1.
Soll der Countdown null einschließen, verschiebe die ausgeschlossene Endgrenze einen Schritt weiter:
range(3, -1, -1)
Das erzeugt 3, 2, 1 und 0.
Die Richtung muss zur Schrittweite passen. Eine positive Schrittweite bewegt sich auf ein größeres Ende zu. Eine negative bewegt sich auf ein kleineres Ende zu.
Liegt der Start in dieser Richtung bereits am Ende oder darüber hinaus, ist der Bereich leer. Beispielsweise erzeugen range(0), range(4, 4) und range(0, 5, -1) keine Werte. Eine Schleife darüber hat also null Durchläufe. Eine Schrittweite von null ist etwas anderes: range(0, 5, 0) löst einen ValueError aus, weil die Schrittweite die Zahl verändern muss.
Was gibt dieser Code aus?
for value in range(10, 0, -3):
print(value)Welcher Aufruf zählt von 5 rückwärts und schließt 0 ein?
Erstelle einen Bereich mit Schrittweite
Die Schleife im Editor erzeugt derzeit keine Werte. Ändere nur ihren Aufruf von range(), sodass sie von 10 in Dreierschritten rückwärts zählt und 10, 7, 4 und 1 erzeugt.
Aufgabe
Ändere den Aufruf range(0).
Beginne bei
10.Stoppe vor
0.Verwende die Schrittweite
-3.Lass den Schleifenrumpf und die letzte Zeile
print(values)unverändert.
Die fertige Liste soll [10, 7, 4, 1] sein.