Python

Die for-Schleife in Python: Grundlagen einfach erklärt

Sei die Erste, die diesen Beitrag teilt!

Egal, ob Anfänger oder fortgeschrittener Coder, eine for-Schleife ist ein wichtiger Baustein in deinem Code oder Algorithmus. Du solltest nicht nur die Funktionsweise verstehen, sondern auch, wann du sie einsetzt und wie du den Code dazu richtig schreibst. In diesem Beitrag findest du eine anfängerfreundliche Erklärung der for-Schleife in Python. Falls du dich schon etwas auskennst, ist dir das vielleicht etwas zu langweilig. Aber ganz am Ende des Beitrags gibt es noch Übungsaufgaben mit Lösungen zur for-Schleife in Python für dich.


Was ist eine for-Schleife?

Eine for-Schleife ist eine Zählerschleife, die in Algorithmen und deshalb beim Programmieren zum Einsatz kommt. Du brauchst for-Schleifen, wenn ein bestimmter Codeabschnitt nicht nur einmal, sondern wiederholt ausgeführt werden soll.

In Python ist eine for-Schleife eine Iteration über ein Objekt eines Sequenz-Datentyps. Hört sich kompliziert an, aber bleib dran und lass uns ein paar Beispiele anschauen.

Beispiel 1 zur for-Schleife in Python

Wir nehmen einfach mal ein ganz ganz simples Beispiel. Du möchtest, dass auf deiner Console in Python die Worte „Hello World!“ erscheinen. Aber nicht nur einmal, sondern 5-mal nacheinander.

Dazu verwendest du eine for-Schleife. Das Ganze sieht dann so aus:

for-Schleife in Python-Code. Es erscheint 5-mal "Hello World!" auf der Console.
5-mal „Hello World!“ auf der Console

(Falls du das mit dem „Hello World!“ noch nie gesehen hast und deine ersten Schritte mit Python machen willst, dann starte hier.)

Wir haben also eine Liste gewählt, die die Zahlen von 1 bis 5 enthält und geschrieben, dass wir für alle diese Zahlen in der Liste die Worte „Hello World!“ angezeigt bekommen möchten. Für die Ausgabe verwenden wir die print-Funktion.


Die richtige Syntax der for-Schleife in Python

Wie haben wir das hingekriegt, dass 5-mal „Hello World!“ erschien? Schau den Code im vorherigen Bild genau an. Wir schreiben das Wort for und dann den Namen einer Variablen. Hier in meinem Beispiel heißt sie zaehler.

Der Name dieser Zählervariablen ist völlig egal, häufig wird auch einfach der Buchstabe i verwendet.

Jetzt kommt etwas ganz Wichtiges! Nach dem Namen der Zählvariablen zaehler steht das Wort in. Das darfst du nicht vergessen!

Anschließend braucht es noch eine Liste, hier [1,2,3,4,5]. Diese sagt uns welche Werte die Zählervariable zaehler annimmt und wann die for-Schleife endet. Anschließend beendest du deinen Befehl mit einem Doppelpunkt : .

Kurz gesagt, du sagst deinem Python-Programm mit den Worten for und in, dass du nun eine for-Schleife machen möchtest.

for … in … :

Was noch? Jetzt kommt alles, was innerhalb deiner for-Schleife passieren soll. Bei uns ist das der Befehl print(„Hello World!“). Wie du sicher bemerkt hast, ist dieser eingerückt.

Inhalt der for-Schleife einrücken

Hier nochmal das gleiche Beispiel wie vorhin. Allerdings habe ich die Zählervariable nun i, anstatt zaehler genannt. Nur, damit du siehst, dass es bisher keine Rolle spielt, wie du diese nennst.

Achte in dem folgenden Bild auf die Tatsache, dass print(„Hello World!“) eingerückt ist. Das war auch im vorherigen Beispiel so.

for-Schleife in Python, es erscheint 5-mal "Hello World!" auf der Console.
for-Schleife in Python-Code

Der Strich in Zeile 2 verdeutlicht, dass ich den Inhalt der for-Schleife eingerückt habe. So weiß Python, was innerhalb der for-Schleife passiert und was danach.

Schau dir folgendes Beispiel an. Ich will 5-mal erneut „Hello World!“ und anschließend den Ausdruck „MINT first.!“ auf der Console erscheinen lassen. Das bedeutet Letzteres darf nicht innerhalb der for-Schleife stehen, sonst wird es auch 5-mal erscheinen.

Beispiel 2 Auf die richtige Einrückung der Codezeilen achten

Python-Code. Nun erscheint 3-mal "Hello World!" und einmal anschließend "MINT first.!" auf der Console.
for-Schleife in Python, „MINT first.“ nicht eingerückt

In Zeile 3 siehst du, dass print(„MINT first.!“) nicht eingerückt ist. Also ist dieser Ausdruck außerhalb der for-Schleife und wird danach ausgeführt.

Da muss man echt genau hinschauen.

Beispiel 3 Nochmal der Codeblock der for-Schleife wird eingerückt

Python-Code. Nun erscheint 3-mal "Hello World!" UND "MINT first.!" immer im Wechsel auf der Console.
for-Schleife in Python, „MINT first.“ auch eingerückt

Du siehst direkt den Unterschied. Der Befehl print(„MINT first.!“) ist auch eingerückt und erscheint deshalb 5-mal direkt nach „Hello World!“ auf der Console.


Wie viele Leerzeichen einrücken bei der for-Schleife Python?

Im offiziellen Python Style Guide PEP-8 (auf englisch) wird empfohlen vier Leerzeichen einzurücken. Nicht nur bei for-Schleifen. Ich verwende den Online-Editor replit.com und dieser rückt automatisch entsprechende Zeilen ein, allerdings nur ein Tab bzw. in dem Fall zwei Leerzeichen. Besser wäre es, ich würde manuell vier Leerzeichen tippen.

Das ist für einen Anfänger vielleicht noch nicht so wichtig. Dennoch, trainiere dir am besten direkt an, vier Leerzeichen zu tippen. Denn so machen es die meisten Python-Coder und es gehört zum guten Stil. (Auch wenn ich es in diesen Beispiel dank replit.com anders mache 🙃 ).

Unabhängig davon ist es wichtig, dass du konsistent bist. Das heißt, dass du dich einmal entscheidest und dann immer die gleiche Anzahl an Leerzeichen innerhalb deines Codes verwendest.


Die range-Funktion in for-Schleifen verwenden

Wenn du über eine Zahlenfolge iterieren möchtest, dann brauchst du nicht jedes Mal eine Liste mit Zahlen zu erstellen.

Es gibt die range-Funktion, diese gehört zu den eingebauten Funktionen in Python und erstellt salopp gesagt, eine Zahlenfolge, die du in der for-Schleife verwenden kannst.

Beispiel 4 for-Schleife in Python mit range-Funktion

Hier ein ähnliches Beispiel, wie vorhin. Du kannst die range-Funktion verwenden, um die Zahlen 1 bis 5 nacheinander auf der Console anzeigen zu lassen.

Beispielcode:

for i in range(1,6):
    print(i)

Ausgabe:

1
2
3
4
5

Bei der range-Funktion musst du darauf achten, dass der Endwert noch Minus 1 gerechnet werden muss.

Das heißt, range(1,6) ergibt die Zahlen von 1 bis 5 und range(1,100) die Zahlen von 1 bis 99.

Außerdem kannst du auch Zahlen überspringen, also eine Schrittweite angeben und sogar rückwärts die Zahlenfolge durchlaufen.

Beispiel 5 range-Funktion mit unterschiedlicher Schrittweite

Hier noch ein paar weitere Beispiel für den range-Iterator in Python, um das Gelernte zu vertiefen. Ich werde an anderer Stelle noch einen ausführlicheren Artikel darüber verfassen.

for i in range(3): # Startwert automatisch = 0, Endwert = 3
    print(i)
for i in range(0,11,2): # Startwert = 0, Endwert = 11, Schrittweite = 2
    print(i)

Ausgabe:

0
1
2
0
2
4
6
8
10

Über Tupel, Mengen (sets), Zeichenketten (strings) und Dictionaries iterieren

Das Besondere an der for-Schleife in Python ist, dass es sich um eine Iteration über gewisse Datenstrukturen handelt. Nämlich kannst du über alle Objekte iterieren, die einem Folgentyp angehören. Das sind Listen, Tupel, Mengen (sets), Zeichenketten (strings) und Dictionaries.

Hört sich kompliziert an, muss es aber gar nicht sein. Schau dir einfach das folgende Beispiel an, das wird hoffentlich Aufschluss geben.

for i in (1,2,3):
    print(i)
for i in {4,5,6}:
    print(i) 
for i in {7: "Hi",8: "Hai",9: "hoi"}:
    print(i)    
for i in "123":
    print(i)

Ausgabe:

1
2
3
4
5
6
7
8
9
1
2
3

Bei Mengen muss man nur aufpassen, dass die Reihenfolge der Elemente nicht fixiert ist. Das kannst du in diesem Beitrag genauer nachlesen.

Bei Dictionaries wird nur über die Keys, nicht über den Value, also den darunter gespeicherten Wert iteriert.

Und auch bei Zeichenketten kannst du einfach jedes Element, also z. B. jeden Buchstaben einzeln aufrufen.


Zusammenfassung for-Schleife Python

  1. Der Code lautet: for … in … : (Vergesse niemals die Befehle „for“, „in“ und den Doppelpunkt „:“)
  2. Die Zählervariable kannst du nennen, wie du willst. Je nach Kontext bieten sich verschiedene Methoden an. (for zaehler in … : oder for i in … : oder for k in … : oder for durchgang in … : , etc. )
  3. Ergänze die Liste mit den Werten, die die Zählvariable annimmt. Z.B. for zaehler in [1,2,3]: , for zaehler in [2,4,6]:, for zaehler in range(1,7): oder for i in („Hans“, „Hallo“, 3.13):
  4. Alles, was innerhalb der for-Schleife passiert, muss eingerückt werden. Am besten vier Leerzeichen tippen.

Ich kann es nicht genug betonen, aber das Wichtigste ist, dass du alle Leerzeichen und Symbole richtig verwendest.

Die allermeisten Fehler sind Flüchtigkeitsfehler, also zum Beispiel das Vergessen einer Klammer, des Doppelpunkts oder Tippfehler.

Deshalb musst du beim Programmieren sehr vorsichtig arbeiten. Auch die Groß- und Kleinschreibung muss beachtet werden.


Aufgaben zur for-Schleife in Python

Um das Gelernte zu veranschaulichen, gebe ich dir hier noch 5 Übungsaufgaben zur for-Schleife in Python mit Lösungen. Viel Spaß!



Nun zu den Aufgaben zur for-Schleife. Überlege dir zuerst, was auf dem Bildschirm erscheinen soll und, wie du es codest, bevor du die Lösung anschaust. Klicke auf die grauen Balken, um Tipps oder Lösungen angezeigt zu bekommen.

Du solltest für die Aufgaben am besten Kenntnisse über Variablen, Datentypen, Mathematische Operatoren, Listen und den print- und input-Befehl in Python haben.

Aufgabe 1

Deklariere eine Variable x und weise ihr den Wert 5 zu. Anschließend soll auf die Variable x die Zahl 3 addiert werden und der neue Wert von x auf der Console ausgegeben werden, dann nochmal und dann nochmal. Also addiere dreimal nacheinander die Zahl 3 auf dein x.

Ausgabe:
Console in Python mit den Werten 8, 11, 14
Das soll auf der Console erscheinen

Es wird zuerst 5+3=8 erscheinen, dann wieder +3, also 8+3=11 und anschließend 11+3=14.

Tipp:

Die for-Schleife muss drei Durchgänge haben, also wähle zum Beispiel die Liste [1,2,3] bzw. range(1,4).

Lösung:
Lösung Aufgabe 1

Aufgabe 2

Lasse die Zahlen 1 bis 10 untereinander auf der Console erscheinen.

Ausgabe:
Das soll auf der Console erscheinen
Tipp:

Nun musst du die Zählervariable auch innerhalb der for-Schleife wieder verwenden. Da sich bei jedem Durchgang die Ausgabe ändert.

Lösung:
Lösung Aufgabe 2

Anstatt range(1,11) hätte ich auch [1,2,3,4,5,6,7,8,9,10] schreiben können.

Aufgabe 3

Erstelle eine Liste namen, die vier Namen von Personen enthält. Anschließend soll jede Person der Liste nacheinander mit „Hallo name!“ begrüßt werden.

Ausgabe:
Das soll auf der Console erscheinen

Die Namen darfst du dir natürlich selbst aussuchen.

Lösung:
Lösung Aufgabe 3

Achte auf die richtigen Leerzeichen innerhalb der strings.

Aufgabe 4

Du hast eine Variable x mit dem Wert 5 und eine Variable y mit dem Wert 2. Nun möchtest du zu deinem x die Zahl 3 addieren und von y die Zahl 1 subtrahieren. Und das Ganze 100-mal nacheinander. Am Ende möchtest du die neuen Werte von x und y wissen. Nicht nach jedem Schritt.

Tipp:

Um die Zahl 3 zu x zu addieren schreibst du entweder x = x + 3 oder x += 3. Die zweite Variante erfordert in Python weniger Rechenzeit. Ist aber für einen Anfänger manchmal komisch vorzustellen. Genauso verhält es sich mit Minus.

Ausgabe:
Das soll auf der Console erscheinen
Lösung:
Lösung Aufgabe 4

Wie in meinem Tipp erwähnt, kannst du anstatt x += 3 auch x = x + 3 bzw. anstatt y -= 1 auch y = y – 1 schreiben.

Aufgabe 5

Schreibe einen Code der die Fakultät der Zahlen 2, 4 und 12 berechnet. Achtung: Du musst das für jede der drei Zahlen einzeln machen, da wir bisher keine Funktionen (functions) gelernt haben.

Tipp:

Die Fakultät einer Zahl ist das Produkt aller natürlichen Zahlen von 1 bis zu dieser Zahl. Das heißt die Fakultät von 4 ist 1*2*3*4 = 24 oder die Fakultät von 2 ist 1*2 = 2. Außerdem ist die Fakultät von 12 die Zahl 479001600.

Ausgabe:
Das soll auf der Console erscheinen

Lösung:
Lösung Aufgabe 5

Wie du sehen kannst ist es wichtig die Variable fakultaet einzuführen. Diese wird dann in der for-Schleife mit jedem Durchgang mit einer weiteren Zahl multipliziert. Außerdem habe ich die Zahl n in der Liste range(1,n+1) verwendet.

Das ist ein wichtiger Aspekt. Falls dir in der Zukunft mal eine Übungsaufgabe begegnet, in der eine Zahl noch nicht vorher bekannt ist. Dann muss man die Liste so erstellen, also mit range. Man kann ja sonst nicht wissen, wie viele Zahlen man in die eckigen Klammern schreiben soll.

Ich hoffe ich konnte dir das Konzept einer for-Schleife vermitteln. Jetzt bist du bereit und kannst noch mehr Aufgaben zum Thema for-Schleife lösen. Schau mal bei einer Suchmaschine deiner Wahl, da findest du bestimmt sehr sehr viele Aufgaben.

Falls du jemand bist, der gerne mit Büchern arbeitet, dann könnte eventuell eines der folgenden Bücher etwas für dich sein. Dort findest du auch viele Übungsaufgaben.

Für Fortgeschrittene habe ich hier noch eine schwierigere Übungsaufgabe, bei der du einen Sternenbaum bzw. Weihnachtsbaum mit einer for-Schleife programmierst. Auch wenn momentan nicht Weihnachten ist, kannst du viel durch die Aufgabe lernen.

Lass mir gerne ein Kommentar da, wenn du Fragen oder Anregungen hast!

Für dich vielleicht ebenfalls interessant...

2 Kommentare

  1. Richie sagt:

    Hallo liebe Viktoria,
    Ich habe vor ein paar Stunden mit Python angefangen und finde deine Erklärungen dazu echt super 😀

    Ich hätte eine Frage zu Aufgabe 5, ich bin ziemlich faul und habe die Fakultätsrechnung in eine (bzw. eine doppel) for-schleife gepackt. Soweit funktioniert das auch ganz gut, jetzt wollte ich noch eigene Eingaben hinzufügen (sodass man im fertigen Programm selbst Zahlen hinzufügen kann), dabei habe ich aber das Problem, dass ich nicht mehrere Zahlen gleichzeitig eingeben kann und auch nicht weiß, wie ich die Liste automatisch ergänzen kann, ohne vordefinierte Variablen. Ich hoffe du kannst mir dabei helfen 🙂
    Anbei mein Code:

    # Aufgabe 5:
    k = int (input(„Bitte Zahl eingeben: „)) # hier will ich mehrere variablen selbst eingeben
    x = 2
    y = 4
    z = 12
    f = 1
    liste = [x,y,z,k] # hier sollen die selbst eingegebenen Variablen automatich hinzugefügt werden
    for b in (liste):
    for i in range (1,b+1):
    f = f*i
    print(f“ Die Fakultät von {b} ist: {f}“)
    f=1

    Schonmal vielen Dank und liebe Grüße
    Richie

    1. Lieber Richie,

      vielen Dank für deine Frage. Als Erstes kommt mir Folgendes in den Sinn:

      – Lass den Nutzer alle Werte eingeben. Diese sollten durch Leerzeichen separiert sein.
      – Danach nutzt du die .split()-Methode für strings, um die Werte zu separieren und in einer Liste zu speichern.

      Anschließend musst du die Werte noch in Zahlentypen, also z.B. int oder float umwandeln.

      Hier ein Codebeispiel:
      beispiel_split_input

      Ich hoffe, das hat deine Frage beantwortet.

      Ganz liebe Grüße

      Viktoria

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert