Python – 03 Wahrheitswerte und Kontrollstrukturen

Python – 03 Wahrheitswerte und Kontrollstrukturen

Voraussetzungen

Bevor du mit diesem Modul startest, solltest du bereits vertraut sein mit:

Lernziele

In dieser Lektion lernen Sie:

  • Booleans (True/False) nutzen
  • Vergleichsoperatoren anwenden
  • Logische Operatoren kombinieren
  • if-elif-else Bedingungen schreiben
  • Verschachtelte Bedingungen verstehen

Was sind Booleans?

Booleans (sprich: Bu-li-äns) sind Wahrheitswerte. Sie können nur zwei Zustände haben: wahr oder falsch. In Python schreibt man diese als True (wahr) und False (falsch).

Grundgerüst

1
2
3
4
5
ist_schueler = True
ist_lehrer = False

print(ist_schueler)  # Ausgabe: True
print(ist_lehrer)    # Ausgabe: False

Der Datentyp für Wahrheitswerte heißt in Python bool (kurz für Boolean). Du kannst ihn mit type() prüfen:

1
2
alter_genug = True
print(type(alter_genug))  # Ausgabe: <class 'bool'>

Wichtig zu wissen

In Python müssen True und False IMMER mit einem Großbuchstaben am Anfang geschrieben werden. true oder false (kleingeschrieben) funktioniert nicht und gibt einen Fehler!

Warum sind Booleans wichtig?

Booleans sind die Grundlage für Entscheidungen in deinem Programm. Dein Code kann unterschiedliche Dinge tun, je nachdem ob etwas wahr oder falsch ist.

Stell dir vor, du programmierst ein Spiel:

  • Ist der Spieler am Leben? → True oder False
  • Hat der Spieler gewonnen? → True oder False
  • Ist das Level abgeschlossen? → True oder False

Vergleichsoperatoren

Mit Vergleichsoperatoren kannst du Werte vergleichen. Das Ergebnis ist immer ein Boolean (True oder False).

OperatorBedeutungBeispielErgebnis
==gleich5 == 5True
!=ungleich5 != 3True
<kleiner als3 < 5True
>größer als5 > 3True
<=kleiner oder gleich5 <= 5True
>=größer oder gleich3 >= 5False

Spezialfall: Modulo-Operator %

1
2
3
print(22 % 3)  # Ausgabe: 1 (Rest bei Division durch 3)
print(22 % 8)  # Ausgabe: 6 (Rest bei Division durch 8)
print(10 % 2)  # Ausgabe: 0 (10 ist durch 2 teilbar, kein Rest!)

Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Beispiele mit Zahlen
print(10 > 5)     # True
print(3 == 3)     # True
print(7 != 7)     # False
print(4 <= 10)    # True

# Beispiele mit Strings
name = "Anna"
print(name == "Anna")   # True
print(name == "Peter")  # False

Aufgabe 1: Erste Vergleiche

  1. Erstelle eine Variable alter und weise ihr dein Alter zu.
  2. Prüfe mit Vergleichsoperatoren:
    • Ist dein Alter größer als 15?
    • Ist dein Alter gleich 16?
    • Ist dein Alter ungleich 100?
  3. Gib alle drei Vergleiche mit print() aus.

Logische Operatoren

Manchmal möchtest du mehrere Bedingungen kombinieren. Dafür gibt es logische Operatoren:

and (und)

Beide Bedingungen müssen wahr sein, damit das Ergebnis True ist.

1
2
3
4
5
6
alter = 16
hat_fuehrerschein = True

# Beide Bedingungen müssen erfüllt sein
darf_fahren = alter >= 18 and hat_fuehrerschein
print(darf_fahren)  # False (weil alter < 18)

or (oder)

Mindestens eine Bedingung muss wahr sein, damit das Ergebnis True ist.

1
2
3
4
5
6
ist_wochenende = False
ist_feiertag = True

# Eine der beiden Bedingungen reicht
hat_frei = ist_wochenende or ist_feiertag
print(hat_frei)  # True

not (nicht)

Kehrt den Wahrheitswert um: aus True wird False und umgekehrt.

1
2
3
ist_regen = True
ist_sonnig = not ist_regen
print(ist_sonnig)  # False

Kombinierte Beispiele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Beispiel 1: and
if 3 + 4 == 8 and 5 + 7 == 12:
    print("Alles gut gemacht.")
else:
    print("Ach du meine Güte, nein!")  # Wird ausgeführt

# Beispiel 2: or
if 3 + 4 == 8 or 5 + 7 == 12:
    print("Jo, eins von beiden passt schon.")  # Wird ausgeführt
else:
    print("Geht ja wohl gar nicht!")

Wahrheitstabellen

and-Operator:

  • True and TrueTrue
  • True and FalseFalse
  • False and TrueFalse
  • False and FalseFalse

or-Operator:

  • True or TrueTrue
  • True or FalseTrue
  • False or TrueTrue
  • False or FalseFalse

if-else-Bedingungen

Mit if kannst du deinen Code nur dann ausführen lassen, wenn eine Bedingung wahr ist.

Einfaches if-else

1
2
3
4
temperatur = 25

if temperatur > 20:
    print("Es ist warm draußen!")

Du kannst auch einen else-Block hinzufügen für den Fall, dass die Bedingung falsch ist:

1
2
3
4
5
6
punkte = 42

if punkte >= 50:
    print("Bestanden!")
else:
    print("Leider nicht bestanden.")

if-elif-else

Mit elif (else if) kannst du mehrere Bedingungen prüfen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
note = 2

if note == 1:
    print("Sehr gut!")
elif note == 2:
    print("Gut!")
elif note == 3:
    print("Befriedigend")
else:
    print("Das geht besser!")

Verschachtelte Bedingungen

Tipp

\n Ist das Zeichen für “neue Zeile” im Terminal

Du kannst if-Bedingungen ineinander verschachteln, um komplexere Entscheidungen zu treffen.

Beispiel: Ratespiel

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
print('Willkommen zu meinem Ratespiel!')
print('Denke an ein Auto, einen Bär oder einen Menschen!')

aw = input('Ist es lebendig? (ja/nein)\n')

if aw == 'nein':
    print('Es ist das Auto!\n')
elif aw == 'ja':
    aw = input('Hat es vier Beine? (ja/nein)\n')
    if aw == 'ja':
        print('Es ist der Bär!')
    elif aw == 'nein':
        print('Es ist der Mensch!\n')
    else:
        print('Ungültige Eingabe!')
else:
    print('Ungültige Eingabe!')

Praktische Beispiele mit if-else

Mit dem folgenden Code wird geprüft, ob die Variable zahl den Wert 3 hat oder nicht. Je nach dem, ob die Bedingung erfüllt ist oder nicht, wird eine andere Anweisung befolgt.

1
2
3
4
5
6
zahl = 3

if zahl == 3: #prüfe Bedingung (hier: wenn zahl 3 ist)
    print("Die Zahl ist 3.") #Anweisung, wenn erfüllt
else: #sonst
    print("Die Zahl ist nicht 3.") #Anweisung, wenn nicht erfüllt

Aufgabe 2: Ratespiel mit Verschachtelung

Mit Python kannst du auch ein kleines Ratespiel erstellen. Dafür musst du if-else-Bedingungen verschachteln. Wie das funktioniert, klären wir an einem Beispiel erst einmal visuell mithilfe eines sogenannten Flussdiagramms:

  • Nutzer wird nacheinander gefragt.
  • Seine Angabe wird gespeichert.
  • Die Bedingungen werden geprüft.

Der Nutzer soll immer wieder gefragt werden und eine Eingabe machen, dafür sorgt der folgende Teil.

1
2
#Die Konsole gibt den Text zwischen den Hochkommas aus. Die Antwort des Benutzers wird in der Variable aw gespeichert.
aw = input('Hier steht die Frage an Nutzer')

Der vollständige Code zu dem Ratespiel oben sieht so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
print('Willkommen zu meinem Ratespiel! Ich werde erraten, woran du denkst! Denke an ein Auto, einen Bär oder einen Menschen! Gib bitte immer ein ja oder nein als Antwort ein!\n')

aw = input('Ist es lebendig?\n')

if aw == 'nein':
    print('Es ist das Auto!\n')
else:
    if aw == 'ja':
        aw = input('Hat es vier Beine?\n')
        if aw == 'ja':
            print('Es ist der Bär!')
        else:
            print('Es ist der Mensch!\n')
  1. Probiere den Code oben aus und erkläre:
2. Erstelle ein ähnliches Ratespiel. 3. Erstelle ein Ratespiel mit mehr Verschachtelungen. Benutze nur "ja/nein"-Fragen. 4. Vervollständige den Code unten sinnvoll (d.h. die Verzweigungen sollen bei der Auswahl des Getränkes sinnvoll angelegt werden).
1
2
3
4
5
6
7
8
9
aw = input("Saft oder Softdrink?")

if aw == "Saft":
    aw = input("Apfelsaft oder O-Saft?")
    if aw == "Apfelsaft":
        print("Gute Wahl, Äpfel sind lecker!")
    else:
        print("O-Saft, Vitamin C pur!")
# Rest ab hier

Aufgabe 3: elif-Statement

if-else-Bedingungen lassen sich verschachteln, um mehr als nur genau 2 Fälle zu unterscheiden. Das kann schnell unübersichtlich werden. Man kann auch elif nutzen!

Beispiel

1
2
3
4
5
6
7
8
aw = int(input('Gib eine Zahl ein!\n')) #int() macht aus der Eingabe, die zunächst als Text angenommen wird, eine Zahl

if aw < 0:
    print('Die Zahl ist negativ.')
elif aw > 0:
    print('Die Zahl ist positiv.')
else:
    print('Hast wohl 0 eingegeben...')
  1. Probiere das Beispiel aus. Gib auch mal etwas Ungültiges ein. Was passiert?
  2. Ändere den Code so, dass geprüft wird, ob eine Zahl kleiner, gleich oder größer als 17 ist.
  3. Erstelle eine neue Version deines Ratespiels, bei dem du ein elif-Statement nutzt, um ungültige Eingaben abzufangen. Schau dir den Tipp möglichst spät an. (a)
  4. Schau dir meine Lösung unter Tipp an und erstelle ein Flussdiagramm (Begriff: siehe Aufgabe 3) zu dem Code in dem Tipp. Der Code dort ist etwas anders als der in Aufgabe 3. Du kannst diese Seite dafür nutzen. (a)
  5. Erstelle ein Flussdiagramm zu deiner Lösung aus Teilaufgabe 3, also zu deinem eigenen Ratespiel mit elif-Statements. (a)

Tipp

Mit meinem Ratespiel oben hätte man:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
aw = input('Ist es lebendig?\n')
if aw == 'nein':
    print('Es ist das Auto!\n')
elif aw == 'ja':
    aw = input('Hat es vier Beine?\n')
    if aw == 'ja':
        print('Es ist der Bär!')
    elif aw == 'nein':
        print('Es ist der Mensch!\n')
    else:
        print('Ungültige Eingabe!\n') #warum ist das noch nötig?
else:
    print('Ungültige Eingabe!\n')

Aufgabe 4: Logische Operatoren (and/or)

Erstelle einen Code der folgende Kriterien erfüllt (a):

  • Du als Programmierer:in gibst zwei Werte für zwei Variablen vor.
  • Die gespeicherten Werte werden in einem if-else-Codeblock beide geprüft.
  • Unterscheide folgende Fälle:
    • beide Bedingungen werden erfüllt
    • mindestens eine Bedingung wird erfüllt
    • keine Bedingung wird erfüllt

Grundgerüst:

1
2
3
4
5
6
7
8
9
a = 0 #0 stehe hier für nein
b = 1 #1 stehe hier für ja

if a == 1 and b == 1: #andere Vergleichsoperatoren sind auch erlaubt, also <,>,!=
    print("Beide Bedingungen erfüllt.")
elif a == 1 or b == 1:
    print("Mind. 1 Bedingung erfüllt.")
else:
    print("Keine Bedingung erfüllt.")

Beispiel:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
a = int(input("Möchtest du Milch in deinem Kaffee? Gib 1 für Ja ein und 0 für nein."))
b = int(input("Möchtest du Zucker in deinem Kaffee? Gib 1 für Ja ein und 0 für nein."))


if a == 1 and b == 1:
    print("Zucker und Milch? Igitt!")
elif a == 1 or b == 1:
    print("Naja, wenigstens nicht beides!")
else:
    print("So schmeckt der Kaffee am besten!")

# Alternative
milch = input("Möchtest du Milch in deinem Kaffee? Gib exakt ja oder nein ein.")
zucker = input("Möchtest du Zucker in deinem Kaffee? Gib exakt ja oder nein ein.")


if milch == "ja" and zucker == "ja":
    print("Zucker und Milch? Igitt!")
elif milch == "ja" or zucker == "ja":
    print("Eins von beiden geht ja noch ...")
else:
    print("So schmeckt der Kaffee am besten! (Oder du hast eine ungültige Eingabe gemacht)")

Wahrheitswerte verschiedener Datentypen

In Python haben nicht nur Booleans einen Wahrheitswert. Fast alle Werte können als wahr oder falsch interpretiert werden:

Als False interpretiert werden:

  • False (natürlich)
  • 0 (Zahl Null)
  • "" (leerer String)
  • [] (leere Liste)
  • None (spezieller Wert für “nichts”)

Als True interpretiert werden:

  • True (natürlich)
  • Alle Zahlen außer 0
  • Alle nicht-leeren Strings
  • Alle nicht-leeren Listen

Beispiele

1
2
3
4
5
6
7
8
if "Hallo":
	print("Nicht-leerer String ist True")  # wird ausgeführt

if 0:
    print("Das wird nicht ausgegeben")  # wird NICHT ausgeführt

if [1, 2, 3]:
    print("Nicht-leere Liste ist True")  # wird ausgeführt

Du kannst mit bool() jeden Wert in einen Boolean umwandeln:

1
2
3
4
print(bool(42))       # True
print(bool(0))        # False
print(bool("Text"))   # True
print(bool(""))       # False

Aufgabe 5: Wahrheitswerte testen

  1. Erstelle eine Liste mit verschiedenen Werten: Zahlen, Strings, leere Strings, 0, etc.
  2. Gib für jeden Wert aus, ob er als True oder False interpretiert wird
  3. Nutze dafür die bool()-Funktion

Aufgaben

Aufgabe 6: Altersprüfung

Schreibe ein Programm, das:

  1. Nach dem Alter fragt (nutze input() und konvertiere zu int)
  2. Prüft, ob die Person volljährig ist (18 oder älter)
  3. Eine entsprechende Nachricht ausgibt
1
2
3
4
# Dein Code hier
alter = int(input("Wie alt bist du? "))

# Ergänze den Rest

Aufgabe 7: Notenrechner

Erstelle einen einfachen Notenrechner:

  1. Der Benutzer gibt seine Punktzahl ein (0-100)
  2. Das Programm gibt die entsprechende Note aus:
    • 90-100 Punkte: “Sehr gut”
    • 80-89 Punkte: “Gut”
    • 70-79 Punkte: “Befriedigend”
    • 60-69 Punkte: “Ausreichend”
    • unter 60: “Nicht bestanden”
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
punkte = int(input("Wie viele Punkte hast du erreicht? "))

if punkte >= 90:
    print("Sehr gut")
elif punkte >= 80:
    print("Gut")
elif punkte >= 70:
    print("Befriedigend")
elif punkte >= 60:
    print("Ausreichend")
else:
    print("Nicht bestanden")

Aufgabe 8: Login-System

Erstelle ein einfaches Login-System:

  1. Definiere einen korrekten Benutzernamen und ein Passwort als Variablen
  2. Frage den Benutzer nach Benutzername und Passwort
  3. Prüfe mit and, ob beides korrekt ist
  4. Gib “Login erfolgreich!” oder “Falsche Anmeldedaten!” aus

Hinweis: Denke daran, dass Groß- und Kleinschreibung bei Strings wichtig ist!

Aufgabe 9: Schaltjahr-Prüfer

Schreibe ein Programm, das prüft, ob ein Jahr ein Schaltjahr ist.

Regeln für Schaltjahre:

  • Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist
  • ABER: Wenn es durch 100 teilbar ist, ist es KEIN Schaltjahr
  • AUSSER: Wenn es durch 400 teilbar ist, ist es doch ein Schaltjahr

Tipp: Der Modulo-Operator % gibt den Rest einer Division zurück.

  • jahr % 4 == 0 bedeutet: Jahr ist durch 4 teilbar (Rest ist 0)

Lösung zeigen

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
jahr = int(input("Gib ein Jahr ein: "))

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

Flask-Anwendung

Du hast gerade gelernt, wie man Bedingungen in Python nutzt. In Flask kannst du diese Logik im Backend verwenden!

Voraussetzung für diese Aufgabe

Du solltest bereits Flask – 01 Erste Schritte durchgearbeitet haben. Wenn nicht, hole das jetzt nach.

Altersprüfung in Flask

Setze die Altersprüfung aus Aufgabe 6 in eine Flask-Anwendung um.

Anforderungen:

  1. Erstelle eine Route /alter-check mit GET und POST
  2. Zeige ein Formular, wo der Benutzer sein Alter eingeben kann
  3. Nach dem Absenden: Prüfe in Python mit if-else, ob volljährig
  4. Übergib das Ergebnis als Text ans Template

Tipp: Die if-else Logik machst du in Python, nicht im Template!

Lösung zeigen

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# app.py
from flask import Flask, render_template, request

app = Flask(__name__)

@app.route("/alter-check", methods=['GET', 'POST'])
def alter_check():
    if request.method == 'POST':
        alter = int(request.form.get('alter'))

        # if-else Logik in Python!
        if alter >= 18:
            nachricht = f"Du bist volljährig! ({alter} Jahre)"
            status = "erfolg"
        else:
            nachricht = f"Du bist noch minderjährig. ({alter} Jahre)"
            status = "info"

        return render_template("alter_ergebnis.html",
                               nachricht=nachricht,
                               status=status)

    return render_template("alter_formular.html")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<!-- templates/alter_formular.html -->
{% extends "base.html" %}

{% block content %}
<h1>Altersprüfung</h1>
<form method="POST">
    <label for="alter">Dein Alter:</label>
    <input type="number" id="alter" name="alter" required>
    <button type="submit">Prüfen</button>
</form>
{% endblock %}
1
2
3
4
5
6
7
8
<!-- templates/alter_ergebnis.html -->
{% extends "base.html" %}

{% block content %}
<h1>Ergebnis</h1>
<p class="{{ status }}">{{ nachricht }}</p>
<a href="/alter-check">Nochmal prüfen</a>
{% endblock %}
Zuletzt aktualisiert am