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

Ausnahmebehandlung
Anpassen von Ausnahme-Klassen

Ziel

Überprüfe das gesammelte Regenwasser und stelle sicher, dass es korrekt verarbeitet und übertragen wird, indem du Ausnahmeklassen anpasst.

Am anderen Ende des Dachkomplexes befindet sich eine Zisterne mit gesammeltem Regenwasser. Dieses Wasser wird gefiltert und im gesamten Gebäude für verschiedene Zwecke verteilt. Einige Ventile an der oberen Wand kontrollieren den fließenden Wasserdruck, während der letzte Lagerraum verschiedene Wassererhitzer beherbergt. Der Betrieb der Maschinen kann knifflig sein, jedoch lässt sich ihre Funktionsweise effektiv optimieren, indem Fehlercodes aufgelistet und Gegenmaßnahmen eingerichtet werden. Dies wird erreicht, indem du benutzerdefinierte Ausnahmeklassen erstellst, die du für deine eigenen Ausnahmen anlegst.

Es gibt zwei benutzerdefinierte Ausnahme-Klassen, die im Code-Editor eingerichtet wurden; deine Fähigkeit, sie zu verwenden, wird entscheidend sein, um etwaige Maschinenprobleme zu beheben. Die erste ist eine Ausnahme zur Fehlersuche beim Wasserdruck. Sie soll zusammen mit den Ventilen verwendet werden, um sicherzustellen, dass das Wasser ordnungsgemäß in den Komplex fließt oder ob der Druck angepasst werden muss. Abhängig davon, ob der Druck unter 100 oder über 300 liegt, wird durch die Ausnahme eine unterschiedliche Aktion ausgeführt, wobei der Druck als Argument übergeben wird. Sobald sie ausgelöst wird, erscheint ein benutzerdefiniertes Pop-up mit einem Fehlercode und einer Nachricht.

class PressureError(Exception): def __init__(self, pressure, message="Water pressure is offset, pressure is: ", error_code=404): self.pressure = pressure self.message = message self.error_code = error_code super().__init__(self.message) async def __str__(self): await player.write("[Error: %s {%s %s}]" % (self.error_code , self.message, self.pressure)) if self.pressure < 100: return ("Valve has been closed") if self.pressure > 360: return ("Valve has been opened")

Die zweite benutzerdefinierte Ausnahme-Klasse ist dazu gedacht, die Temperatur in den Wassererhitzern zu regeln. Wenn die Temperatur zu niedrig oder zu hoch ist, musst du eine neue Temperatur als Argument eingeben, um den Fehler zu beheben, sobald er auftritt.

class TemperatureError(Exception): def __init__(self, temp, message="Temperature is not appropiate, enter new temperature: ", error_code=808): self.temp = temp self.message = message self.error_code = error_code super().__init__(self.message) async def __str__(self): await player.write("[Error: %s {%s %s}]" % (self.error_code , self.message, self.temp)) return ("Temperature Corrected")

Um zu beginnen, gehe zum leuchtenden X-Marker über dem grünen Teppich und richte dich zum Tank mit einem Ventil. Es gibt vier (4) davon, die den Druck des Wassers regulieren, welches aus der Zisterne gepumpt wird. Es gibt vier (4) variable Konstanten: green_pressure, red_pressure, blue_pressure und orange_pressure. Diese speichern den Druck der jeweiligen Tanks der entsprechenden farbigen Teppiche.

Bei allen leuchtenden X-Markierungen verwendest du die try/except- und else-Codeblock-Sequenzen, um zu überprüfen, ob der Druck in jedem Tank angemessen ist. Wenn der Druck unter 100 liegt oder über 300 liegt, löse die benutzerdefinierte PressureError-Ausnahme aus und übergebe den Druck als Argument. Wird sie aktiviert, gibt sie den Fehlercode aus und führt eine Korrektur durch, andernfalls wird die else-Klausel ausgelöst, die bestätigt, dass der Druck im Tank angemessen ist. Zum Beispiel:

try: if green_pressure < 100 or green_pressure > 360: raise PressureError(green_pressure) except PressureError as x: player.speak(x) else: player.speak( "Pressure is appropriate" )

Führe dies an allen leuchtenden X-Markierungen durch, indem du die variablen Konstanten verwendest, die den jeweiligen farbigen Teppichen zugeordnet sind, und den Druck der Ventile nach Bedarf überprüfst oder anpasst.

Sobald dies erledigt ist, gehe zum goldenen X-Marker und benutze die Funktion open(), um den Lagerraum mit dem Wassererhitzer zu betreten. Einmal darin, gehe zum goldenen X-Marker, der sich im Lagerraum befindet, und verwende die Funktion read(), um die Notiz auf der Theke zu lesen. Diese Notiz liefert dir Informationen darüber, welche ideale Temperatur für jeden der Wassererhitzer gilt.

Sobald du die Informationen zu den einzelnen Temperaturen hast, gehe zum dunklen X-Marker über dem violetten Teppich. Hier werden wir die try/except- und else-Code-Sequenz verwenden, um zu überprüfen, ob die Wassererhitzer die richtige Temperatur haben. Es gibt vier (4) weitere variable Konstanten, die den farbigen Teppichen zugeordnet sind: purple_temperature, yellow_temperature, pink_temperature und white_temperature.

In dieser Sequenz überprüfen wir, ob die Temperatur unter 100 liegt. Falls dies der Fall ist, lösen wir die TemperatureError-Ausnahme aus. Als benutzerdefinierte Ausnahme nimmt sie ein Argument entgegen; in diesem Fall musst du die in der Notiz gelesene Temperatur angeben, um die Gegenmaßnahme der Ausnahme zur Behebung des Problems korrekt auszuführen. Zum Beispiel:

try: if purple_temperature < 100: raise TemperatureError(120) except TemperatureError as x: player.speak(x) else: player.speak( "Temperature is ok" )

Führe dies für alle Wassererhitzer durch. An jedem X-Marker, während du den Erhitzern zugewandt bist, führe die Sequenz mit den variablen Konstanten aus, die den entsprechenden farbigen Teppichen zugeordnet sind, um die Stufe erfolgreich abzuschließen.

Codebuch