Übung 11 – elif, and, or: Lösungen
Ziel dieser Übung
Sie unterscheiden mehr als zwei Fälle mit elif und verknüpfen Bedingungen mit and, or und not.
So arbeiten Sie: Die Aufgabe 3 steht in der
Reflexion zu Sitzung 3. Programmieren Sie dort zuerst selbst und vergleichen Sie erst danach mit der Lösung hier. Ihre Lösung darf anders aussehen – wichtig ist, dass sie für alle Eingaben das Richtige ausgibt.
1. elif: sonst, wenn …
Python prüft die Zweige von oben nach unten. Der erste wahre Zweig läuft, alle weiteren werden übersprungen. else fängt alles auf, was übrig bleibt. Deshalb kommt bei „ab …“-Grenzen die höchste Grenze zuerst.
2. and, or, not
| Wort | wahr, wenn … | Beispiel |
|---|
and | beide Bedingungen wahr sind | alter >= 18 and hat_ticket |
or | mindestens eine wahr ist | alter < 12 or alter > 65 |
not | die Bedingung falsch ist | not hat_ticket |
3. Die gemeinsame Aufgabe aus dem TandemLab
Das Kinoprogramm stürzte ab:
alter = input("Wie alt sind Sie? ")
if alter >= 16:
print("Viel Spaß im Film!")
else:
print("Leider erst ab 16.")
TypeError: '>=' not supported between instances of 'str' and 'int'
input() liefert Text. Text und Zahl lassen sich nicht mit >= vergleichen. Repariert mit int() und erweitert um Ticketpreise:
alter = int(input("Wie alt sind Sie? "))
if alter >= 16:
print("Viel Spaß im Film!")
else:
print("Leider erst ab 16.")
if alter < 12:
preis = 6
elif alter < 18:
preis = 8
else:
preis = 11
print(f"Ihr Ticket kostet {preis} Euro.")
Wie alt sind Sie? 15
Leider erst ab 16.
Ihr Ticket kostet 8 Euro.
Aufgabe 3a · Notenrechner Übung
Punkte von 0 bis 100 einlesen, Note ausgeben.
Lösung anzeigen
punkte = int(input("Punkte (0–100): "))
if punkte >= 90:
note = 1
elif punkte >= 80:
note = 2
elif punkte >= 65:
note = 3
elif punkte >= 50:
note = 4
else:
note = 5
print(f"Note: {note}")
Punkte (0–100): 72
Note: 3
Stünde punkte >= 50 ganz oben, bekäme jede Punktzahl ab 50 die Note 4 – die Reihenfolge entscheidet.
Aufgabe 3b · Eintritt im Schwimmbad Übung
Unter 6 frei, unter 18 oder studierend 3 Euro, sonst 5 Euro.
Lösung anzeigen
alter = int(input("Alter: "))
studium = input("Studieren Sie? (ja/nein) ")
if alter < 6:
preis = 0
elif alter < 18 or studium == "ja":
preis = 3
else:
preis = 5
print(f"Eintritt: {preis} Euro")
Alter: 21
Studieren Sie? (ja/nein) ja
Eintritt: 3 Euro
or reicht, wenn eine der beiden Bedingungen stimmt. Tipp: Mit studium.lower() == "ja" klappt es auch bei der Eingabe „Ja“.
Aufgabe 3c · Zusatz: ungültige Eingaben Übung
Punkte unter 0 oder über 100 abfangen.
Lösung anzeigen
punkte = int(input("Punkte (0–100): "))
if punkte < 0 or punkte > 100:
print("Ungültige Eingabe")
elif punkte >= 90:
print("Note: 1")
elif punkte >= 80:
print("Note: 2")
elif punkte >= 65:
print("Note: 3")
elif punkte >= 50:
print("Note: 4")
else:
print("Note: 5")
Punkte (0–100): 120
Ungültige Eingabe
Weiter zu Mini-Projekt 1: Ihr Entscheidungsspiel →
Exercise 11 – elif, and, or: Solutions
Goal of this exercise
You handle more than two cases with elif and combine conditions with and, or and not.
How to work: Task 3 is in the
reflection on session 3. Program it there yourself first and only then compare with the solution here. Your solution may look different – what matters is that it gives the right output for every input.
1. elif: else, if …
Python checks the branches from top to bottom. The first true branch runs, all others are skipped. else catches everything that is left. So with “from …” limits the highest limit comes first.
2. and, or, not
| Word | true if … | Example |
|---|
and | both conditions are true | alter >= 18 and hat_ticket |
or | at least one is true | alter < 12 or alter > 65 |
not | the condition is false | not hat_ticket |
3. The joint task from the TandemLab
The cinema program crashed:
alter = input("Wie alt sind Sie? ")
if alter >= 16:
print("Viel Spaß im Film!")
else:
print("Leider erst ab 16.")
TypeError: '>=' not supported between instances of 'str' and 'int'
input() returns text. Text and a number cannot be compared with >=. Fixed with int() and extended with ticket prices:
alter = int(input("Wie alt sind Sie? "))
if alter >= 16:
print("Viel Spaß im Film!")
else:
print("Leider erst ab 16.")
if alter < 12:
preis = 6
elif alter < 18:
preis = 8
else:
preis = 11
print(f"Ihr Ticket kostet {preis} Euro.")
Wie alt sind Sie? 15
Leider erst ab 16.
Ihr Ticket kostet 8 Euro.
Task 3a · Grade calculator Practice
Read points from 0 to 100, print the grade.
Show solution
punkte = int(input("Punkte (0–100): "))
if punkte >= 90:
note = 1
elif punkte >= 80:
note = 2
elif punkte >= 65:
note = 3
elif punkte >= 50:
note = 4
else:
note = 5
print(f"Note: {note}")
Punkte (0–100): 72
Note: 3
If punkte >= 50 came first, every score from 50 would get grade 4 – the order decides.
Task 3b · Swimming pool admission Practice
Under 6 free, under 18 or a student 3 euros, otherwise 5 euros.
Show solution
alter = int(input("Alter: "))
studium = input("Studieren Sie? (ja/nein) ")
if alter < 6:
preis = 0
elif alter < 18 or studium == "ja":
preis = 3
else:
preis = 5
print(f"Eintritt: {preis} Euro")
Alter: 21
Studieren Sie? (ja/nein) ja
Eintritt: 3 Euro
or is enough if one of the two conditions holds. Tip: with studium.lower() == "ja" it also works for the input “Ja”.
Task 3c · Extra: invalid input Practice
Catch points below 0 or above 100.
Show solution
punkte = int(input("Punkte (0–100): "))
if punkte < 0 or punkte > 100:
print("Ungültige Eingabe")
elif punkte >= 90:
print("Note: 1")
elif punkte >= 80:
print("Note: 2")
elif punkte >= 65:
print("Note: 3")
elif punkte >= 50:
print("Note: 4")
else:
print("Note: 5")
Punkte (0–100): 120
Ungültige Eingabe
On to mini project 1: your decision game →