Zum Inhalt springen
Python Anfänger 2 min

if/else in Python - Bedingte Logik

Lerne, wie du mit if, elif und else Entscheidungen in deinen Python-Programmen triffst. Von einfachen Bedingungen bis zu komplexen Verzweigungen.

Aktualisiert:

Warum Bedingungen?

Programme sollen nicht immer dasselbe tun. Sie sollen Entscheidungen treffen — genau wie wir im Alltag:

  • Wenn es regnet, dann nimm einen Regenschirm mit.
  • Wenn du 18 bist, dann darfst du Auto fahren, sonst nicht.
  • Wenn die Note unter 4.0 liegt, dann “nicht bestanden”.

In Python nutzen wir dafuer if, elif und else.


Die if-Anweisung

Die einfachste Form einer Bedingung:

alter = 20

if alter >= 18:
    print("Du bist volljaehrig!")

Ausgabe:

Du bist volljaehrig!

Wichtig: Einrueckung ist entscheidend!

Python verwendet Einrueckung (4 Leerzeichen oder 1 Tab) statt geschweifter Klammern. Der eingerueckte Block gehoert zur if-Anweisung:

temperatur = 35

if temperatur > 30:
    print("Es ist heiss!")          # gehoert zum if
    print("Trink viel Wasser!")     # gehoert auch zum if

print("Programmende.")              # wird IMMER ausgefuehrt

Ausgabe:

Es ist heiss!
Trink viel Wasser!
Programmende.

Wenn die Bedingung False ist, wird der eingerueckte Block uebersprungen:

temperatur = 15

if temperatur > 30:
    print("Es ist heiss!")          # wird uebersprungen
    print("Trink viel Wasser!")     # wird uebersprungen

print("Programmende.")              # wird ausgefuehrt

Ausgabe:

Programmende.

if-else

Mit else definierst du, was passieren soll, wenn die Bedingung nicht zutrifft:

alter = 15

if alter >= 18:
    print("Du darfst waehlen gehen.")
else:
    print("Du bist noch nicht wahlberechtigt.")

Ausgabe:

Du bist noch nicht wahlberechtigt.

Ein weiteres Beispiel:

zahl = 7

if zahl % 2 == 0:
    print(f"{zahl} ist gerade.")
else:
    print(f"{zahl} ist ungerade.")

Ausgabe:

7 ist ungerade.

if-elif-else — Mehrere Bedingungen

Wenn du mehr als zwei Faelle unterscheiden willst, nutze elif (kurz fuer “else if”):

note = 2.3

if note <= 1.5:
    print("Sehr gut!")
elif note <= 2.5:
    print("Gut!")
elif note <= 3.5:
    print("Befriedigend.")
elif note <= 4.0:
    print("Ausreichend.")
else:
    print("Nicht bestanden.")

Ausgabe:

Gut!

Python prueft die Bedingungen von oben nach unten. Sobald eine zutrifft, wird der zugehoerige Block ausgefuehrt und der Rest uebersprungen.

punkte = 85

if punkte >= 90:
    print("A")
elif punkte >= 80:
    print("B")       # Diese Bedingung trifft zu -> "B"
elif punkte >= 70:
    print("C")       # Wird nicht mehr geprueft!
elif punkte >= 60:
    print("D")
else:
    print("F")

Verschachtelte Bedingungen

Du kannst if-Anweisungen ineinander verschachteln:

alter = 25
fuehrerschein = True

if alter >= 18:
    if fuehrerschein:
        print("Du darfst Auto fahren.")
    else:
        print("Du bist alt genug, aber hast keinen Fuehrerschein.")
else:
    print("Du bist noch zu jung zum Autofahren.")

Ausgabe:

Du darfst Auto fahren.

Achte darauf, nicht zu tief zu verschachteln — das wird schnell unuebersichtlich. Oft lassen sich verschachtelte Bedingungen mit logischen Operatoren vereinfachen (siehe unten).


Vergleichsoperatoren in Bedingungen

Hier sind alle Vergleichsoperatoren, die du in Bedingungen verwenden kannst:

OperatorBedeutungBeispiel
==gleichx == 5
!=ungleichx != 5
<kleiner alsx < 5
>groesser alsx > 5
<=kleiner oder gleichx <= 5
>=groesser oder gleichx >= 5
x = 10

print(x == 10)   # True
print(x != 5)    # True
print(x > 15)    # False
print(x <= 10)   # True

Python erlaubt auch verkettete Vergleiche:

alter = 25

# Statt: alter >= 18 and alter <= 65
if 18 <= alter <= 65:
    print("Du bist im erwerbsfaehigen Alter.")

Logische Operatoren: and, or, not

Mit logischen Operatoren kombinierst du mehrere Bedingungen:

and — Beide Bedingungen muessen wahr sein

alter = 25
einkommen = 3000

if alter >= 18 and einkommen >= 2000:
    print("Kreditantrag moeglich.")

or — Mindestens eine Bedingung muss wahr sein

tag = "Samstag"

if tag == "Samstag" or tag == "Sonntag":
    print("Wochenende!")
else:
    print("Arbeitstag.")

not — Bedingung umkehren

regen = False

if not regen:
    print("Kein Regenschirm noetig!")

Kombination

alter = 20
student = True
einkommen = 500

if alter < 25 and (student or einkommen < 1000):
    print("Du bekommst einen Rabatt!")

Beachte die Klammern — sie steuern die Reihenfolge der Auswertung.


Der ternaere Operator

Fuer einfache if-else-Ausdruecke gibt es eine Kurzschreibweise:

# Normale Schreibweise
alter = 20
if alter >= 18:
    status = "volljaehrig"
else:
    status = "minderjaehrig"

# Ternaerer Operator (Kurzform)
status = "volljaehrig" if alter >= 18 else "minderjaehrig"
print(status)  # volljaehrig

Weitere Beispiele:

x = 10
ergebnis = "positiv" if x > 0 else "nicht positiv"
print(ergebnis)  # positiv

# In f-Strings
note = 1.3
print(f"Ergebnis: {'bestanden' if note <= 4.0 else 'durchgefallen'}")

# Verschachtelt (besser vermeiden -- wird unlesbar)
x = 0
vorzeichen = "positiv" if x > 0 else "negativ" if x < 0 else "null"
print(vorzeichen)  # null

match/case — Structural Pattern Matching (Python 3.10+)

Seit Python 3.10 gibt es match/case als elegante Alternative zu langen if-elif-Ketten:

befehl = "start"

match befehl:
    case "start":
        print("Programm wird gestartet...")
    case "stop":
        print("Programm wird gestoppt...")
    case "pause":
        print("Programm wird pausiert...")
    case _:
        print(f"Unbekannter Befehl: {befehl}")

Ausgabe:

Programm wird gestartet...

Der Unterstrich _ ist der Wildcard-Pattern — er trifft auf alles zu (wie else).

Pattern Matching mit Werten

http_status = 404

match http_status:
    case 200:
        print("OK")
    case 301:
        print("Weitergeleitet")
    case 404:
        print("Nicht gefunden")
    case 500:
        print("Serverfehler")
    case _:
        print(f"Status: {http_status}")

Pattern Matching mit OR-Patterns

tag = "Samstag"

match tag:
    case "Samstag" | "Sonntag":
        print("Wochenende!")
    case "Montag" | "Dienstag" | "Mittwoch" | "Donnerstag" | "Freitag":
        print("Arbeitstag.")
    case _:
        print("Ungueltiger Tag.")

Pattern Matching mit Tupeln

punkt = (0, 5)

match punkt:
    case (0, 0):
        print("Ursprung")
    case (x, 0):
        print(f"Auf der X-Achse bei x={x}")
    case (0, y):
        print(f"Auf der Y-Achse bei y={y}")
    case (x, y):
        print(f"Punkt bei ({x}, {y})")

Ausgabe:

Auf der Y-Achse bei y=5

Truthy und Falsy in Bedingungen

In Python hat jeder Wert einen Wahrheitswert. Du musst nicht immer explizit vergleichen:

Falsy-Werte (werden als False behandelt)

# All diese Werte sind "falsy":
if not None:
    print("None ist falsy")

if not 0:
    print("0 ist falsy")

if not "":
    print("Leerer String ist falsy")

if not []:
    print("Leere Liste ist falsy")

if not {}:
    print("Leeres Dictionary ist falsy")

if not False:
    print("False ist falsy")

Truthy-Werte (werden als True behandelt)

# Alles andere ist "truthy":
if 42:
    print("42 ist truthy")

if "Hallo":
    print("'Hallo' ist truthy")

if [1, 2, 3]:
    print("[1, 2, 3] ist truthy")

Praktische Anwendung

name = input("Wie heisst du? ")

# Statt: if name != ""
if name:
    print(f"Hallo, {name}!")
else:
    print("Du hast keinen Namen eingegeben.")

# Listen pruefen
warenkorb = []

# Statt: if len(warenkorb) > 0
if warenkorb:
    print(f"Du hast {len(warenkorb)} Artikel.")
else:
    print("Dein Warenkorb ist leer.")

Praxis: Altersueberpruefung

# Kompletttes Beispiel: Altersueberpruefung fuer verschiedene Aktivitaeten
alter = int(input("Wie alt bist du? "))

print(f"\nDu bist {alter} Jahre alt. Das bedeutet:")

if alter < 0:
    print("Ungueltiges Alter!")
elif alter < 6:
    print("- Du bist im Kindergartenalter.")
elif alter < 14:
    print("- Du bist ein Kind.")
    print("- Du darfst Kinderfilme im Kino sehen.")
elif alter < 16:
    print("- Du bist ein Jugendlicher.")
    print("- Du darfst Filme ab 12 sehen.")
elif alter < 18:
    print("- Du bist ein Jugendlicher.")
    print("- Du darfst Filme ab 16 sehen.")
    print("- Du darfst Moped fahren.")
else:
    print("- Du bist volljaehrig.")
    print("- Du darfst waehlen.")
    print("- Du darfst Auto fahren.")
    if alter >= 21:
        print("- Du darfst in den USA Alkohol kaufen.")

Praxis: Notenberechnung

# Notenberechnung mit Punkten
punkte = float(input("Erreichte Punkte (0-100): "))

if punkte < 0 or punkte > 100:
    print("Ungueltige Punktzahl!")
else:
    if punkte >= 92:
        note = 1.0
    elif punkte >= 81:
        note = 2.0
    elif punkte >= 67:
        note = 3.0
    elif punkte >= 50:
        note = 4.0
    else:
        note = 5.0

    bestanden = "Bestanden" if note <= 4.0 else "Nicht bestanden"
    print(f"Punkte: {punkte}")
    print(f"Note: {note}")
    print(f"Ergebnis: {bestanden}")

Haeufige Fehler

Fehler 1: = statt ==

x = 10

# FALSCH: = ist Zuweisung, nicht Vergleich!
# if x = 10:    # SyntaxError!

# RICHTIG: == ist der Vergleichsoperator
if x == 10:
    print("x ist 10")

Fehler 2: Fehlende Einrueckung

x = 5

# FALSCH:
# if x > 3:
# print("Groesser als 3")    # IndentationError!

# RICHTIG:
if x > 3:
    print("Groesser als 3")  # 4 Leerzeichen Einrueckung

Fehler 3: Doppelpunkt vergessen

x = 5

# FALSCH:
# if x > 3        # SyntaxError: Doppelpunkt fehlt!

# RICHTIG:
if x > 3:
    print("Groesser als 3")

Fehler 4: Unnoetig mit True/False vergleichen

ist_aktiv = True

# UMSTAENDLICH:
if ist_aktiv == True:
    print("Aktiv")

# BESSER:
if ist_aktiv:
    print("Aktiv")

# UMSTAENDLICH:
if ist_aktiv == False:
    print("Nicht aktiv")

# BESSER:
if not ist_aktiv:
    print("Nicht aktiv")

Uebungen

Uebung 1: Gerade oder ungerade

Schreibe ein Programm, das den Benutzer nach einer Zahl fragt und ausgibt, ob sie gerade oder ungerade ist.

Loesung anzeigen
zahl = int(input("Gib eine Zahl ein: "))

if zahl % 2 == 0:
    print(f"{zahl} ist gerade.")
else:
    print(f"{zahl} ist ungerade.")

Uebung 2: Groesste von drei Zahlen

Schreibe ein Programm, das drei Zahlen einliest und die groesste ausgibt.

Loesung anzeigen
a = float(input("Erste Zahl: "))
b = float(input("Zweite Zahl: "))
c = float(input("Dritte Zahl: "))

if a >= b and a >= c:
    print(f"Die groesste Zahl ist {a}")
elif b >= a and b >= c:
    print(f"Die groesste Zahl ist {b}")
else:
    print(f"Die groesste Zahl ist {c}")

# Oder einfacher mit max():
# print(f"Die groesste Zahl ist {max(a, b, c)}")

Uebung 3: Schaltjahr

Schreibe ein Programm, das prueft, ob ein Jahr ein Schaltjahr ist. Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist, AUSSER es ist durch 100 teilbar — es sei denn, es ist auch durch 400 teilbar.

Loesung anzeigen
jahr = int(input("Gib ein Jahr ein: "))

if (jahr % 400 == 0) or (jahr % 4 == 0 and jahr % 100 != 0):
    print(f"{jahr} ist ein Schaltjahr.")
else:
    print(f"{jahr} ist kein Schaltjahr.")

Uebung 4: Taschenrechner

Schreibe einen einfachen Taschenrechner, der zwei Zahlen und einen Operator (+, -, *, /) einliest und das Ergebnis berechnet. Beruecksichtige Division durch Null!

Loesung anzeigen
zahl1 = float(input("Erste Zahl: "))
operator = input("Operator (+, -, *, /): ")
zahl2 = float(input("Zweite Zahl: "))

if operator == "+":
    ergebnis = zahl1 + zahl2
elif operator == "-":
    ergebnis = zahl1 - zahl2
elif operator == "*":
    ergebnis = zahl1 * zahl2
elif operator == "/":
    if zahl2 == 0:
        print("Fehler: Division durch Null!")
        ergebnis = None
    else:
        ergebnis = zahl1 / zahl2
else:
    print(f"Unbekannter Operator: {operator}")
    ergebnis = None

if ergebnis is not None:
    print(f"{zahl1} {operator} {zahl2} = {ergebnis}")

Pro-Tipp: Guard Clauses

Statt tief verschachtelte if-Anweisungen zu schreiben, verwende “Guard Clauses” — pruefe zuerst die Fehlerfaelle und steige frueh aus:

# Verschachtelt (schwer lesbar):
def berechne_rabatt(alter, ist_mitglied):
    if alter > 0:
        if alter >= 65:
            return 0.20
        elif ist_mitglied:
            return 0.10
        else:
            return 0.0
    else:
        return 0.0

# Mit Guard Clauses (besser lesbar):
def berechne_rabatt(alter, ist_mitglied):
    if alter <= 0:
        return 0.0
    if alter >= 65:
        return 0.20
    if ist_mitglied:
        return 0.10
    return 0.0
Zurück zum Python Kurs