Zum Hauptinhalt springen

Verschachtelung und elif

Wie Sie bereits bei den Struktogrammen gesehen haben, können Wenn-Blöcke ineinander verschachtelt werden:

Eingabe: Umsatz
Wenn Umsatz > 100:
Wenn Umsatz > 500:
Rabatt = 10
Sonst:
Rabatt = 5
Sonst:
Rabatt = 0
Rechnungsbetrag = Umsatz - Rabatt
Ausgabe: Rechnungsbetrag
Struktogramm programmieren

Entwickeln Sie ein Python-Programm, das dem obigen Struktogramm entspricht.


Laden...

elif

Nehmen wir an, wir möchten ein Programm entwickeln, welches aus einer eingegebenen Punktzahl eine Note berechnet und ausgibt. Wir wollen dazu folgende Notenskala verwenden:

PunkteNote
>906
>805.5
>705
>604.5
>504
≤503.5

Unten finden Sie eine Idee, wie wir so etwas vielleicht umsetzen könnten. Lesen Sie sich das Programm zuerst durch und überlegen Sie sich, was es z.B. für die Eingabe 72 ausgeben wird. Probieren Sie es dann aus.

punkte = int(input('Punkte: '))

if punkte > 90:
print(6)
if punkte > 80:
print(5.5)
if punkte > 70:
print(5)
if punkte > 60:
print(4.5)
if punkte > 50:
print(4)
else:
print(3.5)

Leider macht das Programm noch nicht ganz das, was wir möchten. Wie erklären Sie sich die Ausgabe?

Laden...

Theoretisch könnten wir das Programm nun wie folgt umschreiben, um unser Ziel zu erreichen:

punkte = int(input('Punkte: '))

if punkte > 90:
print(6)
else:
if punkte > 80:
print(5.5)
else:
if punkte > 70:
print(5)
else:
if punkte > 60:
print(4.5)
else:
if punkte > 50:
print(4)
else:
print(3.5)

Lesen Sie das Programm durch, probieren Sie es aus, und überzeugen Sie sich davon, dass es korrekt funktioniert.

Leider ist es aber ziemlich unleserlich. Die Lösung: das Stichwort elif. Es handelt sich dabei um eine Kombination aus else und if.

Das elif steht auf der gleichen Einrückungsebene wie das if und das else. Es wird nur unter folgenden Bedingungen ausgeführt:

  1. Die Bedingung des if trifft nicht zu.
  2. Die Bedingung keines vorangehenden, zum selben if gehörenden elif trifft zu.
  3. Seine eigene Bedingung trifft zu.

In einem if-elif-else-Konstrukt wird das else nur dann ausgeführt, wenn weder das if noch ein elif ausgeführt wird.

Unser Programm können wir nun folgendermassen vereinfachen:

punkte = int(input('Punkte: '))

if punkte > 90:
print(6)
elif punkte > 80:
print(5.5)
elif punkte > 70:
print(5)
elif punkte > 60:
print(4.5)
elif punkte > 50:
print(4)
else:
print(3.5)

Für die drei verwandten Schlüsselwörter if, elif und else gelten folgende Regeln:

if
Muss vorhanden sein, wenn ein elif oder else gebraucht werden soll.
Trägt eine Bedingung.
elif
Trägt eine Bedingung.
Optional.
Zu einem if dürfen beliebige viele elif gehören (auch gar keins).
Bezieht sich immer auf das letzte if auf derselben Einrückungsebene.
else
Trägt keine Bedingung.
Optional.
Zu einem if darf es höchstens ein else geben.
Bezieht sich immer auf das letzte if auf derselben Einrückungsebene.

Übungen

Farbwahl

Zeichnen Sie zuerst eine beliebige Figur mit der Turtle (z.B. ein Fünfeck), ohne die Stiftfarbe zu verändern.

Passen Sie Ihr Programm nun so an, dass es vor dem Zeichnen die Benutzerin fragt, welche Stiftfarbe verwendet werden soll.

Es sollten mindestens die Eingaben grün, blau, rot und braun erlaubt sein. Gibt man eine nicht-unterstützte Farbe ein (z.B. gelb oder blabla), soll das Programm eine entsprechende Warnung ausgeben und die Stiftfarbe auf schwarz setzen.

elif verwenden

Theoretisch könnte man diese Aufgabe nur mit if und else lösen. Zwischen einem zusammengehörenden if und else sollte man aber immer elif-Blöcke verwenden. Das macht den Code leserlicher und vermeidet Fehler.


Laden...
Emoji Translator

Entwickeln Sie ein Programm, bei dem der Benutzer ein beliebiges Wort eingeben kann, welches dann zu einem entsprechenden Emoji übersetzt wird.

Wenn man z.B. hallo eingibt, dann könnte das Programm beispielsweise 👋 ausgeben.

Sie können natürlich nicht für jedes beliebige Wort eine Übersetzung definieren. Ihr Programm sollte aber mindestens 10 Wörter zu einem Emoji übersetzen können. Gibt man ein Wort ein, für das keine Übersetzung existiert, soll das Programm zudem eine entsprechende Warnung ausgeben.

elif verwenden

Verwenden Sie auch hier wieder elif-Blöcke, wo es Sinn macht.

Bonus: Entwickeln Sie das Programm so, dass man in einer Endlosschleife immer wieder ein nächstes Wort eingeben kann. Das klappt allerdings nur in Thonny – nicht auf der Webseite.


Laden...