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
Cláusula Else

Objetivo

Toma los materiales de reparación y ordénalos, luego desecha los desechos no deseados utilizando la cláusula else con manejo de excepciones.

Algunos materiales de reparación han sido almacenados en la parte superior del edificio; estos se utilizan para reparar el techo después de tormentas o por desgaste general. Algunos fueron entregados recientemente y aún se encuentran almacenados en envoltorios y contenedores, mientras que otros han estado guardados por mucho tiempo y fueron mezclados con la basura. Sería una buena idea clasificar los materiales, almacenarlos adecuadamente y desechar la basura y los desechos.

Debido a la naturaleza de los materiales desorganizados, es probable que se presenten errores. Puedes abordar esto utilizando el bloque de código try / except, sin embargo, puede ser un poco complicado si no estás familiarizado con los errores que podrías encontrar. No obstante, puedes ampliar tus herramientas de manejo de excepciones añadiendo la cláusula else. Esto te permite ejecutar código si el bloque except no se ejecuta, permitiéndote optimizar tu código y es ideal para identificar y limpiar errores.

Para comenzar, debes entrar al almacén de la izquierda y caminar hacia la marca X iluminada. Esta sala almacena tejas utilizadas para reparar las tejas del techo. Usa la función collect() para recoger la constante de lista llamada shingles.

La lista probablemente contiene varios materiales basura mezclados que deben ser eliminados; además, están almacenados en seis (6) compartimentos diferentes, cada uno con su propia cantidad de materiales. Necesitas consolidar todos los materiales en un solo montón. Crea una variable llamada red_storage para almacenar todos los materiales y una lista llamada junk para depositar todos los materiales inservibles.

Normalmente, solo identificarías los materiales, los convertirías en números enteros usando int() y los almacenarías en una variable para poder guardarlos. Pero, como probablemente esperas, dado los niveles previos en el capítulo y el tema de este ejercicio, es seguro que se producirá un error.

for x in range(6): player.speak(int(shingles[x])) red_storage+=int(shingles[x])

Esto, lamentablemente, generará un Value Error, ya que algunos de los elementos de la lista parecen no ser números. Para solucionarlo, puedes utilizar los bloques de código try / except y else para ordenar los materiales. Al usar el bloque else transformamos efectivamente el bloque except en un filtro que elimina los elementos no deseados de la lista, mientras que el bloque else captura y transfiere los elementos correctos a la variable que creamos.

for x in range(6): try: player.speak(int(shingles[x])) except: player.speak("Item %s is junk" % (x)) junk.append(shingles[x]) else: red_storage+=int(shingles[x])

Con esto, la variable red_storage ahora contiene todas las tejas utilizables, mientras que toda la basura se ha añadido a la lista junk. Camina hacia la marca X dorada en el almacén de la izquierda en el que te encuentras, y utiliza la función write() para registrar el número de tejas destinadas al almacenamiento, de la siguiente manera: await player.write("There are %s shingles ready for use in storage" % (red_storage)). Después, camina hacia la marca X oscura sobre la alfombra roja y utiliza la función place() para almacenar la variable red_storage en la caja.

Una vez completada esta tarea, dirígete al almacén de la derecha, donde se almacenan tablas de madera y materiales necesarios para reparar estructuras de techos y paredes. Dirígete hacia la marca X oscura sobre la alfombra verde y utiliza la función collect() para recoger la constante de lista llamada planks_set de la caja; esta lista contiene tablones que ya han sido limpiados de cualquier residuo. Camina hacia la marca X iluminada junto a ella y utiliza nuevamente la función collect() para recoger otra constante de lista llamada shipment, que contiene materiales de tablones que fueron enviados recientemente y aún contienen algunos desechos.

Al igual que en la sala anterior, la lista shipment probablemente contenga varios materiales basura mezclados que deben eliminarse. Al igual que antes, están almacenados en seis (6) compartimentos diferentes, cada uno con su propia cantidad de materiales. Crea una variable llamada blue_storage para almacenar todos los materiales y poder consolidarlos en un solo montón. Al igual que antes, los materiales de desecho se depositarán en la lista junk.

Para los tablones, vamos a convertir y añadir todos los materiales útiles de la lista shipment y agregarlos a la lista planks_set, para luego consolidarlos todos, utilizando int(), en la variable blue_storage. Sin embargo, al igual que antes, se deben esperar errores.

for y in range(6): planks_set[y]+=int(shipment[y]) player.speak(planks_set[y]) blue_storage+=int(planks_set[y])

Esta vez puedes esperar un Type Error, que es lo que ocurre cuando intentas sumar números y cadenas de texto. Esto se puede solucionar utilizando nuevamente los bloques de código try / except y else; el try suma las listas, el bloque except filtra la basura de la lista y la cláusula else agrega los tablones a la variable blue_storage.

for y in range(6): try: planks_set[y]+=int(shipment[y]) player.speak(planks_set[y]) except: player.speak( "Item %s is junk. Slot only has %s items" % (y,planks_set[y])) junk.append(shipment[y]) else: blue_storage+=int(planks_set[y])

Ahora que la variable blue_storage está poblada, puedes documentar y almacenar todas las tablas de madera. Camina hacia la marca X dorada en el almacén de la derecha en el que te encuentras, colócate frente a la mesa y utiliza la función write() para contabilizar los materiales que consolidaste, de la siguiente manera: await player.write("There are %s planks ready for use in storage" % (blue_storage))

Para finalizar el nivel, camina hacia la marca X oscura sobre la alfombra azul y utiliza la función place() para almacenar la variable blue_storage en la caja. Luego, camina hacia la marca X oscura sobre la alfombra púrpura en la cámara central y utiliza la función place() para desechar la lista junk en el conducto de basura, completando así tu tarea.

Libro de Código