EMZETT.
Login

if…else

Kurz: Die grundlegende Kontrollstruktur für Verzweigungen: Ist eine Bedingung wahr, wird ein Codeblock ausgeführt, sonst (else) ein anderer.

Genauer: Der else-Zweig ist optional — ein reines if-Statement ohne else führt seinen Block nur bei erfüllter Bedingung aus und macht sonst einfach mit dem restlichen Code weiter. Mehrere Bedingungen lassen sich über else…if-Ketten verknüpfen; bei vielen möglichen festen Werten ist ein Switch-Statement oft lesbarer.

Im Detail

if alter >= 18:
    print("Volljährig")
else:
    print("Minderjährig")

if...else ist eine der ersten Kontrollstrukturen, die man in jeder Sprache lernt, weil sie den fundamentalsten Baustein jeder nicht-trivialen Programmlogik darstellt: eine Entscheidung basierend auf einer Bedingung. Zusammen mit Schleifen (Wiederholung) bilden Verzweigungen die zwei grundlegenden Kontrollstrukturen, aus denen sich praktisch jeder Programmablauf zusammensetzt — jede noch so komplexe Programmlogik lässt sich letztlich auf diese beiden Bausteine (plus einfache Sequenz, also “einen Befehl nach dem anderen”) zurückführen.

Ein häufig übersehener Stolperstein ist die Einrückung bzw. Blockzugehörigkeit: In Sprachen mit geschweiften Klammern gehört ohne explizite Klammern nur die UNMITTELBAR nächste Anweisung zum if-Block:

if (bedingung)
    tuEtwas();
    tuNochEtwas();  // GEHÖRT NICHT ZUM IF! Läuft IMMER, unabhängig von der Bedingung

Dieser Fehler ist besonders tückisch, weil die Einrückung im Editor suggeriert, dass beide Zeilen zum if gehören, während der Compiler das anders sieht. Deshalb gilt als bewährte Praxis, auch bei einer einzelnen Anweisung immer explizite Klammern zu setzen — Python umgeht dieses Problem strukturell, indem die Einrückung dort selbst Teil der Syntax ist und nicht nur eine optische Konvention.

Ein weiterer wichtiger Punkt ist der Kurzschluss-Charakter der Bedingungsauswertung: Bei zusammengesetzten Bedingungen mit UND/ODER wird die Auswertung abgebrochen, sobald das Ergebnis feststeht (siehe Logische Operatoren) — das wird gezielt genutzt, um riskante Prüfungen (z. B. einen Wert lesen, der vielleicht gar nicht existiert) erst NACH einer sicherstellenden Vorprüfung auszuführen.

Siehe auch: if-Statement, else…if, Switch-Statement