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

Ausnahmebehandlung
Else-Klausel

Zielsetzung

Nimm Reparaturmaterialien und sortiere sie, dann entsorge unerwünschte Abfälle durch die Verwendung des else-Zweigs mit Ausnahmebehandlung.

Einige Reparaturmaterialien wurden im obersten Teil des Gebäudes gelagert. Diese werden verwendet, um das Dach nach Stürmen oder bei allgemeinem Verschleiß zu reparieren. Einige wurden kürzlich geliefert und sind noch in Verpackungen und Behältern aufbewahrt, andere wurden schon sehr lange gelagert und mit dem Schrott vermischt. Es wäre eine gute Idee, die Materialien zu sortieren, die brauchbaren Materialien ordnungsgemäß zu lagern und den Schrott sowie Abfälle zu entsorgen.

Aufgrund der Natur der unorganisierten Materialien können Fehler auftreten. Du kannst dies mit dem try / except Code-Block beheben, allerdings kann es etwas knifflig sein, wenn du nicht weißt, welche Fehler auftreten könnten. Du kannst jedoch deine Werkzeuge zur Ausnahmebehandlung erweitern, indem du den else-Zweig hinzufügst. Dadurch wird Code ausgeführt, falls der except-Block nicht ausgeführt wird, was deinen Code optimiert und sich gut eignet, um Fehler zu identifizieren und zu bereinigen.

Zu Beginn solltest du den linken Lagerraum betreten und dich in Richtung des hellen X-Markers bewegen. Dieser Raum lagert Dachschindeln, die zur Reparatur der Dachziegel verwendet werden. Nutze die collect()-Funktion, um die Listen-Konstante namens shingles aufzusammeln.

Die Liste enthält wahrscheinlich mehrere Schrottmaterialien, die entfernt werden müssen, zumal sie in sechs (6) verschiedenen Fächern gelagert sind, von denen jedes seine eigene Menge an Materialien enthält. Du musst alle Materialien zu einem einzigen Haufen zusammenführen. Erstelle eine Variable namens red_storage, um alle Materialien zu speichern, und eine Liste namens junk, in die du alle Abfälle legen kannst.

Normalerweise würdest du die Materialien einfach identifizieren, sie mit int() in ganze Zahlen umwandeln und in einer Variable speichern, damit du sie weglegen kannst. Aber wie du wahrscheinlich erwarten kannst, angesichts der vorherigen Level im Kapitel und des Themas dieser Übung, ist es unvermeidlich, dass ein Fehler auftritt.

for x in range(6): player.speak(int(shingles[x])) red_storage+=int(shingles[x])

Dies wird leider einen Value Error erzeugen, da einige der Elemente in der Liste offenbar keine Zahlen sind. Um dieses Problem zu beheben, kannst du die try / except und else Code-Blöcke verwenden und die Materialien sortieren. Durch die Verwendung des else-Zweigs verwandeln wir den except-Block effektiv in einen Filter, der unerwünschte Elemente in der Liste entfernt, während der else-Block die guten Elemente in die von uns erstellte Variable überträgt.

for x in range(6): try: player.speak(int(shingles[x])) except: player.speak("Item %s is junk" % (x)) junk.append(shingles[x]) else: red_storage+=int(shingles[x])

Damit enthält die Variable red_storage nun alle brauchbaren Dachschindeln, während der gesamte Schrott der junk-Liste hinzugefügt wurde. Gehe zum goldenen X-Marker im linken Lagerraum, in dem du dich gerade befindest, und verwende die write()-Funktion, um die Anzahl der Dachschindeln für die Lagerung festzuhalten, so: await player.write("There are %s shingles ready for use in storage" % (red_storage)). Anschließend gehe zum dunklen X-Marker auf dem roten Teppich und benutze die place() Funktion, um die Variable red_storage in der Kiste zu verstauen.

Sobald diese Aufgabe erledigt ist, begib dich in den rechten Lagerraum. Dieser Raum lagert Holzplanken und Materialien, die benötigt werden, um Dach- und Wandkonstruktionen zu reparieren. Gehe zum dunklen X-Marker auf dem grünen Teppich und benutze die collect()-Funktion, um die Listen-Konstante namens planks_set aus der Kiste zu holen. Diese Liste enthält Planken, die bereits von jeglichem Abfall befreit wurden. Gehe anschließend zum hellen X-Marker daneben und benutze erneut die collect()-Funktion, um eine weitere Listen-Konstante namens shipment zu holen. Dies sind Plankenmaterialien, die kürzlich geliefert wurden und noch etwas Abfall enthalten.

Ähnlich wie im vorherigen Raum enthält die shipment-Liste wahrscheinlich mehrere Schrottmaterialien, die entfernt werden müssen. Wie zuvor sind sie in sechs (6) verschiedenen Fächern gelagert, von denen jedes seine eigene Menge an Materialien enthält. Erstelle eine Variable namens blue_storage, um alle Materialien zu speichern, damit du sie zu einem einzigen Haufen konsolidieren kannst. Wie zuvor werden die Abfallmaterialien in der junk-Liste abgelegt.

Für die Planken werden wir alle brauchbaren Materialien in der shipment-Liste umwandeln und zu der planks_set-Liste hinzufügen, um sie dann alle mittels int() in der Variable blue_storage zu konsolidieren. Allerdings sind, wie zuvor, Fehler zu erwarten.

for y in range(6): planks_set[y]+=int(shipment[y]) player.speak(planks_set[y]) blue_storage+=int(planks_set[y])

Dieses Mal kannst du einen Type Error erwarten, was passiert, wenn du versuchst, Zahlen und Zeichenketten zu addieren. Dies lässt sich erneut mit den try / except und else Code-Blöcken lösen: Der try-Block fügt die Listen zusammen, der except-Block filtert den Schrott aus der Liste und der else-Zweig fügt die Planken zu blue_storage hinzu.

for y in range(6): try: planks_set[y]+=int(shipment[y]) player.speak(planks_set[y]) except: player.speak( "Item %s is junk. Slot only has %s items" % (y,planks_set[y])) junk.append(shipment[y]) else: blue_storage+=int(planks_set[y])

Nachdem die Variable blue_storage jetzt befüllt ist, kannst du alle Holzplanken dokumentieren und lagern. Gehe zum goldenen X-Marker im rechten Lagerraum, wende dich dem Tisch zu und benutze die write()-Funktion, um die konsolidierten Materialien zu erfassen, so: await player.write("There are %s planks ready for use in storage" % (blue_storage))

Zum Abschluss des Levels gehe zum dunklen X-Marker auf dem blauen Teppich und benutze die place()-Funktion, um die Variable blue_storage in der Kiste zu verstauen. Gehe dann zum dunklen X-Marker auf dem violetten Teppich in der mittleren Kammer und benutze die place()-Funktion, um die junk-Liste in den Müllschacht zu entsorgen, wodurch du deine Aufgabe abschließt.

Codebuch