Coding for KidsCoding for Kids
Niveaux CréatifsDéfisGuide de l'Enseignant
Voter pour les fonctionnalités
Cours avancé de développement Python
Chapitre
>
Niveau

Gestion des exceptions
Personnalisation des classes d'exception

Objectif

Vérifiez l'eau de pluie collectée et assurez-vous qu'elle est correctement traitée et transférée en personnalisant les classes d'exception.

À l'extrémité du complexe de toit se trouve une citerne d'eau de pluie collectée. Cette eau est filtrée et distribuée dans tout le bâtiment pour diverses utilisations. Certaines vannes sur le mur supérieur contrôlent la pression de l'eau, tandis que le dernier entrepôt abrite divers chauffe-eaux. Faire fonctionner les machines peut être délicat, mais leur utilisation peut être rationalisée efficacement en définissant des codes d'erreur et en mettant en place des contre-mesures efficaces. Cela s'obtient en personnalisant les classes d'exception que vous créez pour vos exceptions personnalisées.

Il existe deux classes d'exception personnalisées configurées dans l'éditeur de code, et votre capacité à les utiliser sera essentielle pour résoudre tout problème de machine que vous pourriez rencontrer. La première est une exception destinée à dépanner la pression de l'eau. Elle est conçue pour être utilisée avec les vannes afin de s'assurer que l'eau circule correctement dans le complexe ou que la pression doit être ajustée. En fonction du fait que la pression soit inférieure à 100 ou supérieure à 300, une action différente est effectuée par l'exception, la pression étant un argument que l'utilisateur doit fournir. Une fois activée, une fenêtre contextuelle personnalisée affichant un code d'erreur et un message apparaît.

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

La deuxième classe d'exception personnalisée est destinée à moduler la température dans les chauffe-eaux ; si la température est trop basse ou trop élevée, vous devez entrer une nouvelle température en tant qu'argument afin de corriger l'erreur une fois qu'elle se produit.

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

Pour commencer, marchez jusqu'au X lumineux sur le tapis vert et faites face au réservoir équipé d'une vanne. Il y en a quatre (4) qui régulent la pression de l'eau pompée depuis la citerne. Il y a quatre constantes variables : green_pressure, red_pressure, blue_pressure et orange_pressure, qui contiennent la pression de chacun des réservoirs des tapis de couleur correspondante.

Sur tous les X lumineux, utilisez les séquences de blocs de code try/except et else afin de vérifier si la pression dans chaque réservoir est appropriée. Si la pression est inférieure à 100 ou supérieure à 300, soulevez l'exception personnalisée PressureError en fournissant la pression en argument. Si activée, elle affichera le code d'erreur et émettra une correction, sinon la clause else sera déclenchée pour confirmer que la pression dans le réservoir est appropriée. Par exemple :

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

Faites cela sur tous les X lumineux, en utilisant les constantes variables correspondant aux tapis de couleur, et vérifiez ou ajustez les vannes de pression selon les besoins.

Une fois terminé, marchez jusqu'au X doré et utilisez la fonction open() pour accéder à l'entrepôt contenant le chauffe-eau. Une fois à l'intérieur, marchez jusqu'au X doré situé dans l'entrepôt et utilisez la fonction read() pour lire le mémo sur le comptoir. Ce mémo vous fournira des informations sur la température idéale de chacun des chauffe-eaux.

Une fois que vous aurez les informations sur chaque température, rendez-vous au X sombre sur le tapis violet. Ici, nous utiliserons la séquence de code try/except et else pour vérifier que les chauffe-eaux ont la bonne température. Il y a quatre (4) autres constantes variables associées aux tapis de couleur : purple_temperature, yellow_temperature, pink_temperature et white_temperature.

Dans cette séquence, nous vérifierons si la température est inférieure à 100 ; si c'est le cas, nous lèverons l'exception TemperatureError. En tant qu'exception personnalisée, elle prend un argument ; dans ce cas, vous devez entrer la température indiquée dans le mémo afin d'exécuter correctement la contre-mesure de l'exception pour corriger le problème. Par exemple :

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

Faites cela pour tous les chauffe-eaux. À chaque X, en faisant face aux chauffe-eaux, exécutez la séquence en utilisant les constantes variables correspondant aux tapis de couleur appropriés afin de compléter le niveau.

Livre de Code