Python Crash Course

Kapitel 5

if-Anweisungen

Bedingte Ausführung und logische Tests

Was sind if-Anweisungen?

  • Ermöglichen bedingte Ausführung von Code
  • Testen Bedingungen und reagieren entsprechend
  • Grundlage für Entscheidungen in Programmen
  • Verwenden Boolean-Werte (True/False)
alter = 18
if alter >= 18:
    print("Du bist volljährig!")
else:
    print("Du bist noch minderjährig.")

Bedingte Tests

Tests ergeben immer True oder False

car = 'bmw'
print(car == 'bmw')    # True
print(car == 'audi')   # False

# Verschiedene Vergleiche
age = 25
print(age == 25)       # True
print(age != 30)       # True
print(age > 20)        # True
print(age <= 25)       # True

🛠️ Übung 1: Bedingungen

🔗 jupyter.gymnasium-hummelsbuettel.de

Aufgaben 5-1 und 5-2:

  • 5-1: Bedingungen schreiben und testen
  • 5-2: Verschiedene Vergleichsoperatoren
  • Je 5 True und 5 False Ergebnisse

→ kapitel_5_aufgaben_5-1_5-2.ipynb

↓ Lösungen

💡 Lösung 5-1

# 5-1: Bedingungen
car = 'subaru'
print("Ist car == 'subaru'? Ich erwarte True.")
print(car == 'subaru')

print("\nIst car == 'audi'? Ich erwarte False.")
print(car == 'audi')

# Weitere Tests
age = 25
print("Ist age > 20? Ich erwarte True.")
print(age > 20)

print("Ist age < 18? Ich erwarte False.")
print(age < 18)

Ausgabe:

Ist car == 'subaru'? Ich erwarte True.
True

Ist car == 'audi'? Ich erwarte False.
False
Ist age > 20? Ich erwarte True.
True
Ist age < 18? Ich erwarte False.
False

💡 Lösung 5-2

# 5-2: Verschiedene Tests
name = 'Alice'
print(name.lower() == 'alice')  # True

numbers = [1, 2, 3, 4, 5]
print(3 in numbers)             # True
print(6 not in numbers)         # True

# and/or Tests
age = 25
name = 'Bob'
print(age > 18 and name == 'Bob')  # True
print(age < 18 or name == 'Bob')   # True

Ausgabe:

True
True
True
True
True

if-elif-else Ketten

age = 12

if age < 4:
    price = 0
elif age < 18:
    price = 25
elif age < 65:
    price = 40
else:
    price = 20

print(f"Dein Eintrittspreis beträgt {price} Euro.")

Mehrere Bedingungen mit and und or

# and - beide Bedingungen müssen True sein
age_0 = 22
age_1 = 18
print(age_0 >= 21 and age_1 >= 21)  # False

# or - mindestens eine Bedingung muss True sein
age_0 = 22
age_1 = 18
print(age_0 >= 21 or age_1 >= 21)   # True

# in und not in
banned_users = ['andrew', 'carolina', 'david']
user = 'marie'
if user not in banned_users:
    print(f"{user.title()}, you can post a response.")

🛠️ Übung 2: if-elif-else

Aufgaben 5-3 bis 5-7:

  • 5-3/4/5: Raumschiff-Farben (if, if-else, if-elif-else)
  • 5-6: Altersstufen bestimmen
  • 5-7: Lieblingsobst testen

→ kapitel_5_aufgaben_5-3_5-7.ipynb

↓ Lösungen

💡 Lösung 5-3

# 5-3: Raumschiff grün
alien_color = 'green'
if alien_color == 'green':
    print("Du hast 5 Punkte erhalten!")

Ausgabe:

Du hast 5 Punkte erhalten!

💡 Lösung 5-4

# 5-4: if-else
alien_color = 'red'
if alien_color == 'green':
    print("Du hast 5 Punkte erhalten!")
else:
    print("Du hast 10 Punkte erhalten!")

Ausgabe:

Du hast 10 Punkte erhalten!

💡 Lösung 5-5

# 5-5: if-elif-else
alien_color = 'yellow'
if alien_color == 'green':
    print("Du hast 5 Punkte erhalten!")
elif alien_color == 'yellow':
    print("Du hast 10 Punkte erhalten!")
else:
    print("Du hast 15 Punkte erhalten!")

Ausgabe:

Du hast 10 Punkte erhalten!

💡 Lösung 5-6

# 5-6: Altersstufen
age = 25

if age < 2:
    print("Es ist ein Baby.")
elif age < 4:
    print("Es ist ein Kleinkind.")
elif age < 13:
    print("Es ist ein Kind.")
elif age < 20:
    print("Es ist ein Teenager.")
elif age < 65:
    print("Es ist ein Erwachsener.")
else:
    print("Es ist ein Rentner.")

Ausgabe:

Es ist ein Erwachsener.

💡 Lösung 5-7

# 5-7: Lieblingsobst
favorite_fruits = ['apple', 'banana', 'orange']
if 'apple' in favorite_fruits:
    print("Du magst wirklich gerne Äpfel!")

Ausgabe:

Du magst wirklich gerne Äpfel!

Listen und if-Anweisungen

requested_toppings = ['mushrooms', 'extra cheese']

for requested_topping in requested_toppings:
    if requested_topping == 'green peppers':
        print("Sorry, we are out of green peppers right now.")
    else:
        print(f"Adding {requested_topping}.")

print("\nFinished making your pizza!")

# Leere Liste überprüfen
if requested_toppings:
    # Liste ist nicht leer
    for topping in requested_toppings:
        print(f"Adding {topping}.")
else:
    print("Are you sure you want a plain pizza?")

🛠️ Übung 3: Listen testen

Aufgaben 5-8 bis 5-11:

  • 5-8: Hello Admin - spezielle Begrüßung
  • 5-9: Keine Benutzer - leere Liste
  • 5-10: Benutzernamen überprüfen
  • 5-11: Englische Ordnungszahlen

→ kapitel_5_aufgaben_5-8_5-11.ipynb

↓ Lösungen

💡 Lösung 5-8

# 5-8: Hallo Admin
usernames = ['admin', 'alice', 'bob', 'charlie', 'diana']

for username in usernames:
    if username == 'admin':
        print("Hallo admin, möchtest du einen Statusbericht sehen?")
    else:
        print(f"Hallo {username}, danke, dass du dich wieder eingeloggt hast.")

Ausgabe:

Hallo admin, möchtest du einen Statusbericht sehen?
Hallo alice, danke, dass du dich wieder eingeloggt hast.
Hallo bob, danke, dass du dich wieder eingeloggt hast.
Hallo charlie, danke, dass du dich wieder eingeloggt hast.
Hallo diana, danke, dass du dich wieder eingeloggt hast.

💡 Lösung 5-9

# 5-9: Keine Benutzer
usernames = []

if usernames:
    for username in usernames:
        print(f"Hallo {username}!")
else:
    print("Wir müssen noch Benutzer finden!")

Ausgabe:

Wir müssen noch Benutzer finden!

💡 Lösung 5-10

# 5-10: Benutzernamen überprüfen
current_users = ['alice', 'bob', 'charlie', 'diana', 'eve']
new_users = ['Alice', 'frank', 'Bob', 'grace', 'henry']

current_users_lower = [user.lower() for user in current_users]

for new_user in new_users:
    if new_user.lower() in current_users_lower:
        print(f"Entschuldigung, {new_user} ist bereits vergeben.")
    else:
        print(f"Super, {new_user} ist verfügbar!")

Ausgabe:

Entschuldigung, Alice ist bereits vergeben.
Super, frank ist verfügbar!
Entschuldigung, Bob ist bereits vergeben.
Super, grace ist verfügbar!
Super, henry ist verfügbar!

💡 Lösung 5-11

# 5-11: Ordnungszahlen
numbers = list(range(1, 10))
for number in numbers:
    if number == 1:
        print("1st")
    elif number == 2:
        print("2nd")
    elif number == 3:
        print("3rd")
    else:
        print(f"{number}th")

Ausgabe:

1st
2nd
3rd
4th
5th
6th
7th
8th
9th

🛠️ Übung 4: Code-Gestaltung

Aufgaben 5-12 und 5-13:

  • 5-12: if-Anweisungen formatieren
  • 5-13: Eigene Programmideen entwickeln

→ kapitel_5_aufgaben_5-12_5-13.ipynb

↓ Lösungen

💡 Lösung 5-12

# 5-12: Gute Formatierung
age = 25

# Gut formatiert
if age >= 18:
    print("Du bist volljährig!")
else:
    print("Du bist minderjährig!")

# Schlecht formatiert - zu vermeiden
if age>=18:print("Volljährig!")

Ausgabe:

Du bist volljährig!
Volljährig!

💡 Lösung 5-13

# 5-13: Programmideen
# - Notenverwaltungssystem
# - Einfaches Quiz-Spiel
# - Wetter-App
# - To-Do-Liste
# - Taschenrechner
print("Programmideen gesammelt!")

Ausgabe:

Programmideen gesammelt!

Zusammenfassung Kapitel 5

  • if-Anweisungen: Bedingte Code-Ausführung
  • Vergleichsoperatoren: ==, !=, <, >, <=, >=
  • Logische Operatoren: and, or, not
  • in/not in: Mitgliedschaft in Listen prüfen
  • if-elif-else: Mehrere Bedingungen
  • Listen testen: Leere Listen und Inhalte prüfen

Praktische Tipps

  • Formatierung: Leerzeichen um Operatoren
  • Einrückung: Konsistent 4 Leerzeichen
  • Vergleiche: == für Gleichheit, = für Zuweisung
  • Boolean-Tests: if liste: statt if len(liste) > 0:
# Gut
if age >= 18 and name == 'Alice':
    print("Willkommen!")

# Vermeiden
if age>=18and name=='Alice':
    print("Willkommen!")