Wiederholungsstrukturen

https://oer-informatik.de/python_wiederholungsstrukturen

tl/dr; (ca. 12 min Lesezeit): Wer die Wahl hat, hat die Qual: mit den alternativen Kontrollstrukturen (If-Statements) halten die Suites (Einrückungen) erstmals Einzug in Python. Und die Enttäuschung, weil Mehrfachauswahlen in Python recht umständlich realisiert werden müssen.

Zählergesteuerte Schleifen

In Python werden Zählergesteuerte Schleifen über die Methode range() realisiert. Soll beispielsweise eine Operation zehnmal ausgeführt werden, so wird sie folgendermaßen notiert:

In der Variablen i wird jeweils die Anzahl der Durchläufe gespeichert. Augenscheinlich werden zwar 10 Werte augegeben, jedoch von 0 bis 9. (Python ist also Null-Index-basiert, wie die meisten anderen Programmiersprachen). Die range()- Methode lässt jedoch auch zu, dass wir bei jedem erdenklichen Wert starten und stoppen. Der Startwert wird immer im ersten Durchlauf genutzt, der Stopwert ist derjenige Wert, bei dem die Schleife nicht mehr ausgeführt wird. Folgendes Beispiel würde also nur neun Werte (1-9) ausgeben:

Start und Stopwert können auch direkt in die range()-Funktion eingegeben werden:

Die Zählvariable (hier: i) bleibt auch nach der Schleife erhalten und kann ausgelesen werden. Neben dem Start- und Stopwert kann auch noch die Schrittweite jedes Schleifendurchlaufs angegeben werden, per default ist das 1:

Die Schrittweite kann jedoch auch andere Ganzzahlen als Wert haben - auch negative Zahlen sind möglich, dann wird rückwärts gezählt.

break und continue

Bei continue wird nur der aktuelle Schleifendurchlauf abgebrochen und mit dem nächsten Schleifendurchlauf begonnen.

Nachdem ausgegeben wurde, dass es sich um eine gerade Zahl handelt wird direkt in den nächsten Schleifendurchlauf gesprungen. die Ausgabe von ------- erfolgr daher nur nach ungeraden Zahlen:

1  ungerade
-------
2  gerade
3  ungerade
-------
4  gerade
5  ungerade
-------
6  gerade
7  ungerade
-------
8  gerade
9  ungerade
-------

Weitgehender ist der Abbruch bei break: hier wird die gesamte Schleife abgebrochen:

Sobald die erste gerade Zahl auftritt wird die komplette Schleife abgebrochen:

1  ungerade
-------
2  gerade

Python-Besonderheit: der else-Block bei Schleifen

Im Gegensatz zu den meisten anderen Programmiersprachen bietet Python die Möglichkeit, einen else-Block an die Schleife anzuhängen, der ausgeführt wird, wenn die Schleife beendet wurde. Nur in dem Fall, dass das Schleifenende durch ein break-Statement hervorgerufen wurde, wird diese Suite nicht ausgeführt.

Kopfgesteuerte Wiederholungsstrukturen

Beenden mit "exit": Guten Morgen!
Beenden mit "exit": Hallo
Beenden mit "exit": exit
Tschüss

Analog zu zählergesteuerten Schleifen funktionieren hier auch break, continue und else:

Fußgesteuerte Wiederholungsstrukturen

In vielen Programmiersprachen wird unterschieden zwischen Schleifen, deren Bedingung vor dem ersten Durchlauf geprüft wird (kopfgesteuert / while) und Schleifen, die einmal durchlaufen werden, und erst vor der ersten Wiederholung die Bedingung prüfen (fußgesteuert / do while). Python kennt diese Unterscheidung nicht.

Wir haben aber bei dem obigen Beispiel bereits eine Schleife programmiert, deren Operationen in jedem Fall einmal durchlaufen werden. Die Schleifenbedingung haben wir vor Eintritt in die Schleife mit eingabe = "" auf True gesetzt, und so einen ersten Durchlauf garantiert. Auf diese Weise muss man fußgesteuerte Schleifen in Python implementieren.

Wer den Unterschied zwischen kopfgesteuerten und fußgesteuerten Schleifen nochmal bildhaft unterstützt lernen will, der sollte sich das Bild von den Zeichentrickfiguren Coyote und Roadrunner mal ansehen, z.B. hier

Iteration durch Objektsammlungen mit Wiederholungsstrukturen

Schleifeniterationen sind nicht nur durch range()-Objekte möglich, sondern auch durch andere Objektsammlungen. Der Aufbau ist immer ähnlich:

Beispielsweise werden Zeichenketten als Sammlung einzelner Zeichen begriffen. Dieser Aufruf buchstabiert demnach übergebene Wörter:

Fazit

Auch bei Wiederholungsstrukturen weist Python einige Besonderheiten im Vergleich zu anderen Programmiersprachen auf:

  • Es werden häufiger for-Schleifen gewählt. Mit dem range-Objekt verfügt Python über eine Syntax, die stark von der anderer Sprachen abweicht.

  • do-while-Schleifen gibt es gar nicht, sie müssen selbst aus einer While-Schleife erstellt werden, in dem die Schleifenbedingung vorab auf True gesetzt wird.

  • Ein else-Block bei Schleifen mag auf den ersten Blick verwundern, es gibt aber in Kombination mit dem break-Block durchaus sinnvolle Anwendungsfälle.

Mit Wiederholungsstrukturen und bedingten Anweisungen werden die Programme zunehmend komplex. Höchste Zeit, sie in einzeln aufrufbare Codeblöcke zu unterteilen: [die Funktionen](https://oer-informatik.de/python_funktionen].

Quellen und offene Ressourcen (OER)

Die Ursprungstexte (als Markdown), Grafiken und zugrunde liegende Diagrammquelltexte finden sich (soweit möglich in weiterbearbeitbarer Form) in folgendem git-Repository:

http://gitlab.com/oer-informatik/db-sql/dbms.

Sofern nicht explizit anderweitig angegeben sind sie zur Nutzung als Open Education Resource (OER) unter Namensnennung (H. Stein, oer-informatik.de) freigegeben gemäß der Creative Commons Namensnennung 4.0 International Lizenz (CC BY 4.0).

Creative Commons Lizenzvertrag


Hinweis zur Nachnutzung

Dieses Werk und dessen Inhalte sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: “Erste Schritte mit Python” von Hannes Stein, Lizenz: CC BY 4.0. Die Quellen dieses Werks sind verfügbar auf GitLab.

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: