Coding for KidsCoding for Kids
Kreative LevelHerausforderungenLehrerhandbuch
Für Funktionen abstimmen
Fortgeschrittener Python-Entwicklungskurs
Kapitel
>
Stufe

Ausnahmebehandlung
Mehrere Ausnahmen

Ziel

Sammle medizinische Vorräte ein und lagere sie korrekt in Kisten, indem du mehrere Ausnahmen verwendest.

Die Lager im Dach müssen aufgefüllt werden, einige der Vorräte wurden verbraucht, aber nie ersetzt. In einem Memo in einem der Lagerhäuser wurde ein Auftrag für weitere Materialien aufgegeben – es wäre eine gute Idee, sich darum zu kümmern. Es gibt jedoch eine Vielzahl unterschiedlicher Materialien, die zusammengefügt und in Kisten gelagert werden müssen.

Aufgrund der verschiedenen Datentypen und der Anzahl der Materialien, die benötigt werden, um die Kisten zu füllen, können verschiedene Fehler auftreten. Wir können try / except verwenden, um mögliche Fehler abzufangen und einige Probleme zu beheben, aber was passiert, wenn in einer einzigen Operation mehrere mögliche Fehler auftreten? Um dies anzugehen, können wir angeben, welche Ausnahmen wir abfangen möchten, und mehrere except-Blöcke verwenden.

Zu Beginn gehe zum goldenen X-Marker und wende dich der Tür zu. Verwende die open()-Funktion, um den Lagerraum zu betreten. Sobald du drinnen bist, gehe zum dunklen X-Marker und biege nach rechts, um die read()-Funktion zu nutzen und zu überprüfen, welche Materialien und Mengen im Memo auf dem Tisch bestellt werden. Im Memo sind Informationen über Listen-Konstanten geschrieben, einschließlich der Vorräte und ihrer Bestellungen. Sobald du damit fertig bist, gehe zum hellen X-Marker im Lagerraum, wende dich der Kiste zu und hole die pads-Listenkonstante der Materialien mit der collect()-Funktion, so: player.collect(pads) .

Im Lagerhaus gibt es Vorräte von "peroxide" und "isopropyl". Gehe dorthin und sammle alle ein, dann begebe dich nach draußen und gehe zum dunklen X-Marker auf einem lila Teppich. Auf dem lila Teppich, während du zur Kiste stehst, verwende die collect()-Funktion, um eine "water bottle" zu holen. Gehe weiter zum dunklen X-Marker auf dem gelben Teppich und verwende die collect()-Funktion, um eine "glass bottle" zu holen.

Nachdem die Gegenstände gesammelt wurden, ist es Zeit, den Auftrag auszuführen und alle Materialien in den Lagerhaus-Kisten auf der rechten Seite zu platzieren. Dazu speichern wir zunächst die folgenden Gegenstände in einer Liste namens supplies: "water bottle", "peroxide" und "isopropyl". Auf den dunklen X-Markierungen auf den Teppichen in den Farben red, green und blue werden wir die Kisten benutzen, um die medizinischen Vorräte zu lagern. Dafür richten wir drei Listen ein: blue_crate = [], green_crate = [] und red_crate = [].

Bevor alle Gegenstände platziert werden, müssen wir die Listen mit den Materialien befüllen. Dafür verwenden wir eine Schleife, um die Listen zu durchlaufen und in eine einzige Liste zu kombinieren. Dies wird alle supplies in die Liste einfügen und die Anzahl der pads-Elemente gemäß dem order im Memo im Lagerraum aufteilen.

for x in range(5): blue_crate.append(supplies[x]) blue_crate.append(pads[x]/order[x])

Trotzdem wirst du feststellen, dass Fehler auftreten, obwohl alles korrekt zu sein scheint und der Code fehlerfrei ist. Das Problem besteht darin, dass die Liste supplies nur drei (3) Elemente enthält, die Schleife jedoch fünf (5) Mal durchläuft, was einen Index Error verursacht. Gleichzeitig hat die Liste pads ebenfalls nur drei (3) Elemente und einer der Bestellwerte ist 0 – jede Zahl, die durch 0 geteilt wird, verursacht einen Zero Division Error, da in der Mathematik keine Zahl durch 0 geteilt werden kann.

Hier kommen mehrere Ausnahmen ins Spiel: Wir verwenden die try / except-Codeblöcke, um die Fehler abzufangen und den Code weiter auszuführen. Da zwei Fehler auftreten, müssen wir jeden Fehler identifizieren, um die spezifischen Ausnahmen abzufangen. Dies geschieht, indem wir die except-Codeblöcke wie folgt erweitern: except IndexError: und except ZeroDivisionError:. Zum Beispiel:

for x in range(5): try: blue_crate.append(supplies[x]) blue_crate.append(pads[x]/order[x]) except IndexError: blue_crate.append("glass bottle") except ZeroDivisionError: blue_crate.append(0)

Der Index Error wird behoben, indem fehlende Stellen in der Liste mit "glass bottle" aufgefüllt werden, und der Zero Division Error wird dadurch gelöst, dass im Falle des illegalen Vorgangs der Wert 0 hinzugefügt wird.

Wende dies für die Listen blue_crate = [], green_crate = [] und red_crate = [] an. Gehe zu den dunklen X-Markierungen auf den Teppichen in den Farben blue, green und red und verwende die place()-Funktion, um die Listen in den entsprechenden Kisten abzulegen und das Level abzuschließen.

Codebuch