Coding for KidsCoding for Kids
Creatieve LevelsUitdagingenLerarengids
Stem op functies
Gevorderde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau

Foutafhandeling
Uitzonderingsklassen aanpassen

Doelstelling

Controleer het opgevangen regenwater en zorg dat het correct wordt verwerkt en overgebracht door uitzonderingsklassen aan te passen.

Aan het uiterste einde van het dakcomplex bevindt zich een reservoir met opgevangen regenwater. Dit water wordt gefilterd en door het gebouw getransporteerd voor verschillende doeleinden. Sommige kleppen in de bovenmuur regelen de waterdruk die stroomt, terwijl de laatste opslagruimte verschillende waterverwarmers huisvest. Het bedienen van machines kan lastig zijn, maar de werking kan effectief gestroomlijnd worden door foutcodes helder te omschrijven en effectieve tegenmaatregelen in te stellen. Dit wordt bereikt door uitzonderingsklassen aan te passen die je maakt voor je aangepaste uitzonderingen.

Er zijn twee aangepaste uitzonderingsklassen ingesteld in de code-editor; jouw vermogen om ze te gebruiken zal essentieel zijn bij het oplossen van eventuele machineproblemen die je tegenkomt. De eerste is een uitzondering om de waterdruk te troubleshooten. Deze is bedoeld om samen met de kleppen te worden gebruikt om ervoor te zorgen dat het water op de juiste wijze in het complex stroomt of dat de druk aangepast moet worden. Afhankelijk van of de druk onder de 100 ligt of boven de 300 ligt, wordt er een andere actie ondernomen door de uitzondering. De druk is een argument dat de gebruiker moet opgeven. Zodra de uitzondering wordt geactiveerd, verschijnt er een aangepaste pop-up met een foutcode en bericht.

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")

De tweede aangepaste uitzonderingsklasse is bedoeld om de temperatuur in de waterverwarmers te regelen. Als de temperatuur te laag of te hoog is, moet je een nieuwe temperatuur als argument opgeven om de fout zodra deze optreedt te corrigeren.

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")

Begin door naar het lichte X-teken over het groene tapijt te lopen en richt je op de tank met een klep. Er zijn vier (4) van deze die de druk van het water dat uit het reservoir wordt gepompt, regelen. Er zijn vier (4) variabele constanten: green_pressure, red_pressure, blue_pressure en orange_pressure. Deze bevatten de druk van elk van de tanks van de corresponderende gekleurde tapijten.

Gebruik op alle lichte X-tekens de try/except en else codeblokvolgordes om te verifiëren of de druk in elke tank geschikt is. Als de druk onder 100 ligt of als deze boven 300 is, roep dan de aangepaste PressureError uitzondering op en voeg de druk als argument toe. Als de uitzondering wordt geactiveerd, zal het de foutcode oproepen en een correctie uitvoeren, anders wordt de else clausule geactiveerd die bevestigt dat de druk in de tank geschikt is. Bijvoorbeeld:

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" )

Doe dit op alle lichte X-tekens, gebruikmakend van de variabele constanten die overeenkomen met elk van de gekleurde tapijten, en controleer of pas de drukkleppen aan zoals nodig.

Zodra dit voltooid is, loop je naar het gouden X-teken en gebruik je de open() functie om de opslagruimte met de waterverwarmer te betreden. Eenmaal binnen, loop je naar het gouden X-teken dat zich in de opslagruimte bevindt en gebruik je de read() functie om de memo op de toonbank te lezen. Deze memo geeft je informatie over wat de ideale temperatuur is voor elk van de waterverwarmers.

Zodra je de informatie over elke temperatuur hebt, loop je naar het donkere X-teken over het paarse tapijt. Hier zullen we de try/except en else codevolgordes gebruiken om te verifiëren of de waterverwarmers de juiste temperatuur hebben. Er zijn vier (4) variabele constanten geassocieerd met de gekleurde tapijten: purple_temperature, yellow_temperature, pink_temperature en white_temperature.

In de volgorde zullen we verifiëren of de temperatuur lager is dan 100. Als dat zo is, zullen we de TemperatureError uitzondering oproepen. Als aangepaste uitzondering neemt deze een argument, in dit geval moet je de temperatuur invoeren zoals vermeld in de memo, zodat de tegenmaatregel van de uitzondering correct kan worden uitgevoerd om het probleem te verhelpen. Bijvoorbeeld:

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

Doe dit voor alle waterverwarmers. Op elk X-teken, terwijl je naar de verwarmingselementen kijkt, voer je de volgorde uit met behulp van de variabele constanten die overeenkomen met de correcte gekleurde tapijten om het level te voltooien.

Codeboek