Zählen mit range()
Die for-Schleife geht die Elemente einer Liste durch. Sehr oft musst du aber nur zählen: von 1 bis 10 oder einfach „mach das dreimal“. Dafür hat Python range(). Es gibt der for-Schleife ganze Zahlen, eine nach der anderen:
for i in range(5):
print(i)Das gibt Folgendes aus:
0
1
2
3
4range(5) liefert fünf Zahlen, von 0 bis 4. Wie Listenindizes beginnt es bei 0, und es hört direkt vor der Zahl auf, die du angibst: Die 5 selbst ist nicht dabei. Die Schleifenvariable heißt oft i (für „Index“), aber jeder Name funktioniert.
Um woanders zu beginnen, gib range() zwei Zahlen, den Start und das Ende:
for zahl in range(1, 4):
print(zahl)1
2
3Der Start ist enthalten, das Ende nicht. Um von 1 bis 10 zu zählen, schreibst du range(1, 11). Das zu vergessen ist der häufigste Fehler bei range(): range(1, 10) endet bei 9.
Eine dritte Zahl ist die Schrittweite: wie viel jedes Mal addiert wird. range(0, 21, 5) zählt in Fünferschritten:
for zahl in range(0, 21, 5):
print(zahl)0
5
10
15
20Eine negative Schrittweite zählt rückwärts: range(3, 0, -1) liefert 3, 2 und 1. Das Ende, 0, ist wieder nicht enthalten.
Mit range() kannst du leicht etwas eine bestimmte Anzahl von Malen wiederholen. Diese Schleife benutzt i gar nicht; range(3) sorgt nur dafür, dass sie dreimal läuft:
for i in range(3):
print("Hipp hipp hurra!")Hipp hipp hurra!
Hipp hipp hurra!
Hipp hipp hurra!In der ersten Übung dieser Lektion hast du mit while gezählt: eine Variable vor der Schleife, eine Bedingung und zahl += 1 am Ende des Blocks. for zahl in range(1, 6): tut dasselbe in einer Zeile. Und weil range() von selbst zur nächsten Zahl weitergeht, kannst du nicht vergessen, einen Zähler zu erhöhen, und in einer Endlosschleife landen.
Welche Schleife solltest du also benutzen? for, wenn du weißt, wie oft die Schleife läuft: einmal für jedes Element einer Liste oder mit range() eine bestimmte Anzahl von Malen. while, wenn du es nicht im Voraus weißt, zum Beispiel um eine Zahl immer wieder zu verdoppeln, bis sie größer als 1000 ist:
zahl = 1
verdopplungen = 0
while zahl <= 1000:
zahl = zahl * 2
verdopplungen += 1
print("Verdopplungen:", verdopplungen)
print("Zahl:", zahl)Verdopplungen: 10
Zahl: 1024So schreibst du es:
Anweisungen
- 1
Schreibe die
while-Schleife im Editor alsfor-Schleife mitrange()um und lösche diewhile-Schleife. Das Programm gibt weiterhin die Zahlen von 1 bis 5 aus. - 2
Ändere deine Schleife so, dass sie die Zahlen von 1 bis 10 ausgibt, einschließlich der 10.
- 3
Schreibe darunter eine zweite Schleife, die jede fünfte Zahl von 0 bis 50 ausgibt:
0,5,10und so weiter bis50, jede in einer eigenen Zeile. Verwende die dritte Zahl vonrange(), die Schrittweite.