Alternative Kontrollstrukturen

https://oer-informatik.de/python_alternative_kontrollstrukturen

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.

Bedingte Anweisungen

In bedingten Anweisungen wird überprüft, ob ein Ausdruck (expression) als True ausgewertet wird. Nur wenn diese Bedingung zutrifft, wird der Code in der eingerückten Suite (Codeblock) ausgeführt:

Struktogramm zu einfacher bedingten Anweisung if (Temperatur > 20) “Auf in’s Freibad”
Struktogramm zu einfacher bedingten Anweisung if (Temperatur > 20) “Auf in’s Freibad”

Neben der Suite, die ausgeführt wird, wenn die Bedingung zutrifft, gibt es auch noch einen Bereich, der nur dann ausgeführt wird, wenn die Bedingung nicht zutrifft (else):

Struktogramm zu bedingten Anweisung mit else: if (Temperatur > 20) “Auf in’s Freibad” else “Schade”
Struktogramm zu bedingten Anweisung mit else: if (Temperatur > 20) “Auf in’s Freibad” else “Schade”

Zwischen mehr als zwei Alternativen wählen zu können, muss man in Python ein if/elif/else- Konstrukt wählen. Anders als in anderen Programmiersprachen gibt es hier kein switch/case:

Hierbei ist zu beachten, dass immer nur eine Suite ausgeführt wird: trifft die erste Bedingung zu, so wird nur die zugehörige Suite ausgeführt - alle weiteren Bedingungen werden ignoriert. Als Beispiel:

Auch wenn sich die Bedingungen temperatur > 20 und temperatur >25 überschneiden: bei einer Temperatur von 26 wird lediglich der erste Block ausgeführt.

Kein switch/case in Python

Mehrfachauswahlen lassen sich in Python nicht - wie in anderen Programmiersprachen - mit switch/case umsetzen. Statt dessen müssen if/elif/else-Konstrukte erstellt werden:

Diejenigen, die noch das Kinderbuch “Das Sams” kennen, wissen, dass Herr Taschenbier an den Wochentagen immer auf bestimmte Ereignisse gewartet hat. Worauf er wartet lässt sich beispielsweise so ausdrücken:

Struktogramm mit Mehrfachauswahl nach Wochentagen
Struktogramm mit Mehrfachauswahl nach Wochentagen

In Python sind so Ausdrücke leider immer etwas unübersichtlich. Da hier jeweils nur eine Operation in jeder Suite aufgerufen wird, könnte der Zeilenumbruch nach dem Doppelpunkt auch weggelassen werden. Darunter würde aber die Lesbarkeit noch weiter leiden.

Kurzschreibweise:

Python bietet die Möglichkeit, bei Wertzuweisungen eine Kurzform zu verwenden. Hierbei weicht die Reihenfolge der Operanden und Operatoren leicht von den obigen Beispielen ab: zuerst wird der Wert bei zutreffender Bedingung genannt.

WERT_WENN_TRUE if BEDINGUNG else WERT_WENN_FALSE

Als Beispiel wird hier die Zeichenkette “gerade” bei allen durch zwei restlos teilbaren Ganzzahlen zugewiesen, andernfalls “ungerade”:

Fazit

Drei wichtige Take-Home-Messages gibt es als Besonderheit bei bedingten Anweisungen in Python:

  • Codeblöcke werden per Einrückung als sogenannte Suites gebildet.

  • Weitere bedingte Verzweigungen werden (aus unerfindlichen Gründen) mit elif eingeleitet - es gibt also keine switch/case-Konstrukte.

  • Es gibt eine Kurzschreibweise (s = 'gerade' if n%2==0 else 'ungerade'), die Platz spart aber gewöhnungsbedürftig ist. Möge jede/r selbst entscheiden, ob es zur Wartbarkeit des Codes beiträgt.

Den Kontrollfluss kann man neben den alternativen Verzweigungen auch mit Wiederholungsstrukturen steuern. Mehr dazu im folgenden Text zu Schleifen (wiederholende Kontrollstrukturen).

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:

https://oer-informatik.gitlab.io/python-basics/erste-schritte-mit-python.

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: