Schleifen 2: for
Einführung
Mit Listen oder auch Tupeln haben wir verschiedene Beispiele für sogenannte iterierbare Objekte kennengelernt. Da sind Objekte, deren Elemente, man in vernünftiger Weise durchlaufen kann. Liegt uns ein solches Objekt vor, können wir mit einer for
-Schleife genau dies erreichen, d. h., alle Einträge durchlaufen:
erste_liste = [2, 3, 5, 7, 11]
summe = 0
for eintrag in erste_liste:
summe = summe + eintrag
print(summe) # Ausgabe: 28
Hier werden die Zahlen der Liste durchlaufen und nacheinander dem Wert von summe
hinzugefügt. Auf diesem Weg wird die Summe der eingetragenen Zahlen berechnet.
Auch Strings stellen iterierbare Objekte dar, wie wir an diesem Beispiel sehen können:
mein_string = "Hallo"
for zeichen in mein_string:
print(zeichen)
Die Buchstaben des String werden untereinander ausgegeben, weil print
nach jeder Ausgabe einen Zeilenumbruch veranlasst.
Liegt uns kein iterierbares Objekt vor, können wir eine for
-Schleife auch in der folgenden Form starten:
for zahl in 1, 3, 5:
print (zahl**2)
Hier werden nacheinander die Quadrate der drei gegebenen Zahlen ausgegeben.
range
Nehmen wir an, wir möchten die Quadratzahlen der ungeraden Zahlen von 1 bis 101 anzeigen lassen. Dann wäre es natürlich sehr mühselig, dies analog zum letzten Beispiel von oben umzusetzen. Abhilfe schafft hier die Funktion range
, die uns komfortabel einen gewünschten Zahlenbereich liefert:
for zahl in range(1, 102, 2):
print (zahl**2)
Die Funktion range
kann wie hier mit drei Parametern aufgerufen werden:
-
Der erste gibt den Beginn des Zahlenbereichs an.
-
Der markiert das Ende. Vorsicht! Dabei wird die erste Zahl angegeben, die nicht mehr zum Bereich zählen soll.
-
Der dritte Parameter legt die Schrittweite fest.
Rufen wir range
nur mit zwei Zahlen auf, wird die Schrittweite automatisch auf 1 gesetzt. Rufen wir sie nur mit einer einzigen Zahl auf, wird zusätzlich der Start auf 0 gesetzt.
Wir dürfen auch negative Zahlen als Parameter übergeben, müssen dann aber gut aufpassen, ob unsere Angaben überhaupt logisch sind.