Verschachtelte Bedingungen
Ein Codeblock kann beliebigen Code enthalten, auch eine weitere if-Anweisung. Ein if im Block eines anderen if heißt verschachtelte Bedingung. Sie ist nützlich, wenn eine Frage erst nach einer anderen sinnvoll ist. Im Kino prüfen wir zum Beispiel zuerst, ob der Besucher ein Ticket hat, und erst dann, wie alt er ist:
hat_ticket = True
alter = 15
if hat_ticket:
if alter >= 18:
print("Viel Spaß im Film")
else:
print("Tut mir leid, dieser Film ist nur für Erwachsene")
else:
print("Bitte kaufe zuerst ein Ticket")Das gibt Folgendes aus:
Tut mir leid, dieser Film ist nur für ErwachseneDie innere if-Anweisung wird nur ausgeführt, wenn hat_ticket wahr ist. Ihre Blöcke sind um 4 weitere Leerzeichen eingerückt, also insgesamt 8, und jedes else ist genauso weit eingerückt wie das if, zu dem es gehört. So weiß Python, dass das erste else zu if alter >= 18 gehört und das zweite zu if hat_ticket.
Verschachtelte Bedingungen lassen sich oft mit and und elif umschreiben. Dieser Code tut dasselbe:
hat_ticket = True
alter = 15
if hat_ticket and alter >= 18:
print("Viel Spaß im Film")
elif hat_ticket:
print("Tut mir leid, dieser Film ist nur für Erwachsene")
else:
print("Bitte kaufe zuerst ein Ticket")Das gibt Folgendes aus:
Tut mir leid, dieser Film ist nur für ErwachseneDas Programm kommt nur zu elif hat_ticket, wenn die erste Bedingung falsch ist. Mit Ticket heißt das, dass der Besucher unter 18 ist. Keiner der beiden Wege ist falsch: Nimm den, der leichter zu lesen ist. Wenn keines der beiden if ein else hat, liest sich ein einzelnes if mit and meist besser: Statt if hat_ticket: mit if alter >= 18: darin schreibst du if hat_ticket and alter >= 18:. Es tut dasselbe, mit einer Einrückungsebene weniger.
So schreibst du es:
Anweisungen
- 1
Ein Schüler besteht die Prüfung mit 50 Punkten oder mehr, und mit 75 oder mehr besteht er mit Auszeichnung. Schreibe in den Block von
if punkte >= 50:eine verschachtelteif-Anweisung mit der Bedingungpunkte >= 75, dieMit Auszeichnung bestandenausgibt, und gib ihr einenelse-Zweig, derBestandenausgibt. Du kannst die Zeileprint("Bestanden")wiederverwenden: Verschiebe sie in das innereelseund rücke sie um 4 weitere Leerzeichen ein. - 2
Ändere
punkteauf82und führe das Programm aus. Es sollMit Auszeichnung bestandenausgeben.