i

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.

  1. Zuerst wird geprüft, ob es sich bei den Zahlen überhaupt ein Pasch handelt.
  2. 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 elifs 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

Suche

v
100.102.5.3
inf-schule.de/entwuerfe/python_online/fallunterscheidung/verschachtelte_fallunterscheidungen
inf-schule.de/100.102.5.3
inf-schule.de/@/page/shD8zEO0Surismm5

Rückmeldung geben