Coding for KidsCoding for Kids
Niveles CreativosDesafíosGuía del Maestro
Votar por funciones
Curso Avanzado de Desarrollo en Python
Capítulo
>
Nivel

Manejo de Excepciones
Personalizando Clases de Excepción

Objetivo

Verifica el agua de lluvia recolectada y asegúrate de que se procese y transfiera correctamente personalizando las clases de excepción.

Al final del complejo de techos hay una cisterna de agua de lluvia recolectada; esta agua se filtra y se transfiere a lo largo del edificio para diversos propósitos. Algunas válvulas en la pared superior controlan la presión del agua que fluye, mientras que el último almacén alberga varios calentadores de agua. Operar la maquinaria puede ser complicado; sin embargo, su funcionamiento se puede agilizar eficazmente delineando códigos de error y estableciendo contramedidas efectivas. Esto se logra personalizando clases de excepción que creas para tus excepciones personalizadas.

Hay dos clases de excepción personalizadas configuradas en el editor de código; tu habilidad para usarlas será esencial para solucionar cualquier problema de maquinaria que encuentres. La primera es una excepción para solucionar problemas de presión de agua. Está pensada para ser utilizada con las válvulas para asegurar que el agua fluya adecuadamente hacia el complejo o para ajustar la presión si es necesario. Dependiendo de si la presión es inferior a 100 o superior a 300, se toma una acción diferente por parte de la excepción; la presión es un argumento que el usuario debe proporcionar. Una vez activada, se muestra una ventana emergente personalizada con un código de error y mensaje.

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 segunda clase de excepción personalizada está destinada a modular la temperatura en los calentadores de agua; si la temperatura es demasiado baja o demasiado alta, debes ingresar una nueva temperatura como argumento para corregir el error una vez que ocurra.

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

Para comenzar, camina hasta la marca X luminosa sobre la alfombra verde y dirígete al tanque con una válvula; hay cuatro (4) de estos que regulan la presión del agua que se bombea desde la cisterna. Existen cuatro (4) constantes variables: green_pressure, red_pressure, blue_pressure y orange_pressure, que mantienen la presión de cada uno de los tanques de las alfombras de colores correspondientes.

En todas las marcas X luminosas, utiliza las secuencias de bloques de código try/except y else para verificar si la presión en cada tanque es adecuada. Si la presión es inferior a 100 o si es superior a 300, lanza la excepción personalizada PressureError y añade la presión como argumento. Si se activa, se mostrará el código de error y se emitirá una corrección; de lo contrario, se ejecutará la cláusula else confirmando que la presión en el tanque es adecuada. Por ejemplo:

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

Haz esto en todas las marcas X luminosas, utilizando las constantes variables que corresponden a cada una de las alfombras de colores y verifica o ajusta las válvulas de presión según sea necesario.

Una vez finalizado, camina hasta la marca X dorada y utiliza la función open() para acceder al almacén con el calentador de agua; una vez dentro, camina hasta la marca X dorada que se encuentra dentro del almacén y usa la función read() para leer el memorando en el mostrador. Este memorando te proporcionará información sobre cuál es la temperatura ideal para cada uno de los calentadores de agua.

Una vez que tengas la información sobre cada una de las temperaturas, acércate a la marca X oscura sobre la alfombra morada; aquí usaremos la secuencia de código try/except y else para verificar que los calentadores de agua tengan la temperatura correcta. Existen cuatro (4) constantes variables más asociadas con las alfombras de colores: purple_temperature, yellow_temperature, pink_temperature y white_temperature.

En la secuencia verificaremos si la temperatura es inferior a 100; si lo es, lanzaremos la excepción TemperatureError. Como una excepción personalizada, esta toma un argumento; en este caso, debes ingresar la temperatura leída en el memorando para ejecutar correctamente la contramedida de la excepción y corregir el problema. Por ejemplo:

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

Haz esto para todos los calentadores de agua; en cada marca X, mientras miras hacia los calentadores, ejecuta la secuencia usando las constantes variables correspondientes a las alfombras de colores correctas para completar el nivel.

Libro de Código