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
Excepciones Personalizadas

Objetivo

Utiliza excepciones personalizadas para recopilar mensajes con órdenes de productos y enviarlos a través de una paloma mensajera.

Algunos mensajes se despliegan a lo largo de la granja y en otras estaciones mediante una paloma mensajera; sería una buena idea enviar algunos para mantenerse por delante del horario. Hemos estado capturando errores usando excepciones comunes, pero, a veces, puede ser beneficioso crear tus propias excepciones personalizadas para escenarios muy específicos. Vamos a obtener mensajes y seleccionar palomas identificando los elementos correctos usando nuestras propias excepciones personalizadas.

Las excepciones personalizadas se crean mediante la definición de clases; al añadir la cláusula (Exception) puedes reutilizar una clase para la ejecución de excepciones. Para nuestros propósitos, crearemos dos: InvalidLocation, que se activa cuando una cadena específica no pasa la verificación, y UnsuitableSelection, que se utiliza para verificar si un número supera cierto umbral.

class InvalidLocation(Exception): "Raised when location is invalid" pass class UnsuitableSelection(Exception): "Raised when pidgeon is 2 or younger" pass

Ahora que las clases están configuradas, es momento de ir a buscar los memorandos para que puedan ser enviados. Crea una lista llamada prep para almacenar y combinar los componentes necesarios para el próximo intercambio. Dirígete a la marca X oscura sobre la alfombra roja, en la hilera de mesas con marcas X al frente, buscaremos memorandos que tengan órdenes destinadas al sector occidental de la granja.

Hay cuatro constantes variables utilizadas en este segmento: red_memo, blue_memo, green_memo y orange_memo. Solo se deben recopilar los memorandos que estén marcados para ser entregados en el sector "west" para que puedan ser enviados. Para determinar si tomamos el memorando o no, usaremos bloques de código try/except y else en conjunto con la excepción personalizada InvalidLocation. Para usar la excepción personalizada, haz que el bloque try verifique si el memorando está etiquetado como "west" y, si no lo está, que se lance la excepción. El bloque except confirma que el memorando es inválido y el bloque else recoge y añade a la lista prep el memorando si se comprueba que está destinado al sector "west". Por ejemplo:

try: if red_memo != "west": raise InvalidLocation except InvalidLocation: player.speak("This is not an order that needs to be sent out") else: player.collect(red_memo) prep.append(red_memo)

Dirígete a cada una de las marcas X oscuras sobre las alfombras de colores frente a las mesas y ejecuta la secuencia de excepciones usando las constantes variables correspondientes a cada color.

Una vez que hayas recopilado los memorandos, dirígete a la marca X dorada frente a la puerta y utiliza la función open() para acceder a los palomares. Una vez dentro, camina hasta la marca X clara, date la vuelta, utiliza la función close() para cerrar la puerta y asegurarte de que ninguna paloma se escape.

Dirígete a la marca X oscura sobre la alfombra púrpura, en las plumas verificaremos si la paloma tiene la edad suficiente para volar con un mensaje o si es un polluelo incapaz de hacer una entrega. Hay cuatro constantes variables más a utilizar en este segmento: purple_pen, yellow_pen, white_pen y pink_pen, correspondientes a cada alfombra de color. Usaremos la misma técnica que con los memorandos, utilizando la segunda clase que se configuró.

Utiliza los bloques de código try/except y else con la excepción personalizada UnsuitableSelection para identificar si la paloma tiene la edad suficiente para realizar la entrega. El bloque try verifica si la constante variable que representa la pluma tiene una paloma adecuada comprobando si el ave tiene menos de dos (2) años. Si la paloma es inadecuada, se activa el bloque except; de lo contrario, se activa el bloque else permitiéndote añadir una paloma a la lista prep para que entregue el mensaje.

try: if purple_pen <= 2: raise UnsuitableSelection except UnsuitableSelection: player.speak("Pigeon unsuitable to deliver") else: prep.append(purple_pen) player.speak("Pigeon Collected")

Dirígete a cada marca X oscura sobre las alfombras de colores y usa esta secuencia con la constante variable correcta correspondiente a la alfombra del color adecuado. Una vez que hayas recopilado las palomas y los mensajes, dirígete a la marca X dorada en la parte inferior y utiliza la función place() con la lista prep que creaste, para enviar a las palomas a entregar los mensajes y completar el nivel.

Libro de Código