Verschachtelte Fallunterscheidungen
Wie Schleifen auch, kann man auch Fallunterscheidungen ineinander verschachteln. Das soll hier an zwei einfachen Beispielen gezeigt werden.
Im ersten Beispiel geht es darum, den Wurf mit zwei Würfeln mit dem Computer nachzustellen (zu simulieren) und zu schauen, ob es sich um ein Pasch (beide Würfel haben den gleichen Wert) oder sogar ein Sechserpasch (beide Würfel haben der Wert 6). Zunächst werden die beiden Würfelzahlen zufällig erzeugt und ausgegeben. Danach folgt eine zweistufige Fallunterscheidung.
- Zuerst wird geprüft, ob es sich bei den Zahlen überhaupt ein Pasch handelt.
- Falls dem so ist (und nur dann!), wird zusätzlich geprüft, ob es sich um ein Sechserpasch handelt. Wenn man weiß, dass es sich um Pasch handelt, reicht es hierfür zu überprüfen, ob einer der Würfel den Wert 6 hat.
Im zweiten Beispiel betrachten wir nochmal das Beispiel mit den Passwörtern.
Gerade für einen unerfahrenen Benutzer könnte es verwirrend sein, wenn der Computer ihm sagt, er habe ein falsches Passwort eingegeben, wenn er doch in Wahrheit eigentlich überhaupt kein Passwort eingegeben hat. In Wirklichkeit ist auch ein Wort mit gar keinen Zeichen für Python ein String, aber das weiß eben nicht jeder Benutzer.
Das folgende Programm löst dieses Problem der Benutzerfreundlichkeit.
Was tut das Programm? Es prüft zunächst, ob das eingegebene Passwort das richtige ist .
- Falls ja, ist alles in Ordnung und das Programm begrüßt den Benutzer freundlich.
- Ansonsten gibt es wiederum zwei Möglichkeiten:
- Der Benutzer hat gar kein Passwort eingegeben und einfach Enter gedrückt. In diesem Fall wird er darauf hingewiesen, dass er tatsächlich ein Passwort eingeben muss.
- Ansonsten hat er tatsächlich ein Passwort eingegeben, aber das offensichtlich das falsche.
Eine alternative Darstellung
Das Programm funktioniert gut, und man kann die Logik auch gut verstehen. Allerdings würde so mancher die (gleiche) Logik des Programms auch kompakter erklären:
"Wenn das Passwort das richtige ist, heißt der Computer den Benutzer willkommen. Ansonsten, falls er gar kein Passwort eingegeben hat, weist der Computer darauf hin. In allen sonstigen Fällen sagt der Computer, dass das Passwort falsch war."
Man kann in einer solchen Anweisungen beliebig viele elif
s
hintereinander setzen. Wichtig: Es wird nach oben nach unten geschaut,
bis die erste Bedingung erfüllt ist. Danach wird nicht weitergeprüft.
Ist keine der if
- oder elif
-Bedingungen erfüllt, wird
die Befehlsfolge nach else
abgearbeitet.
Auch das könnte man anders machen, nämlich mit vielen verschachtelten
if ... else ...
-Konstruktionen. Das Problem: Je mehr
Fälle man unterscheiden will, desto weiter muss man unten die Zeilen
nach rechts einrücken und irgendwann bekommt man Probleme mit dem rechten
Zeilenrand. Außerdem wird es dann doch bald recht unübersichtlich.
Aufgabe 4: Leere Eingaben
Teste auch bei diesem Prorgamm, was passiert, wenn Du einfach gar nichts eingibst und gleich die Enter-Taste drückst. Gib auch einmal das richtige Passwort und auch einmal ein falsches Passwort ein. Beschreibe das jeweilige Ergebnis