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

Generadores
Avanzar manualmente un Generador

Objetivo

Usa un generador en una secuencia manual para juntar y producir materiales para hacer pan.

Más adelante hay una instalación donde puedes juntar masa de pan usando las prensas. Normalmente usarías la función combine() para juntar materiales, pero este no es el caso aquí, los materiales necesitan ser refinados primero antes de que puedan ser juntados.

Para esta tarea podemos usar generadores, ya que pueden ser personalizados para generar diferentes tipos de archivo, así como tener su secuencia llamada a pedido en lugar de producir automáticamente como lo hacen las funciones y los bucles. Aquí hay un ejemplo:

def bread(): yield 5 yield "grain"

El código anterior tiene un generador con dos sentencias yield, una de las cuales produce un número real y la otra una cadena. Podemos producir los valores del generador a voluntad usando la función next(). Así:

recipe = bread() # Configura el generador player.place(next(recipe)) # Se llama al primer valor player.collect(next(recipe)) # Se llama al segundo valor

En el ejemplo anterior, se configura el generador y se usa la función next() con el generador para llamar al primer valor yield para su uso en una función place(). Esto se repite con el segundo valor, pero se usa en su lugar en una función collect(). Esto facilita llamar a valores de varios tipos en una secuencia sin tener que usar múltiples listas o variables.

Un generador llamado bread() se definirá en el editor de código, pero requerirá números de cantidad para cada ingrediente para que puedas refinar la masa de pan. Estos números están escritos en el cartel junto a la instalación. Configura el generador para su uso referenciándolo, así: recipe = bread()

Primero camina hasta la marca X clara junto al tanque de leche y collect() el último de la leche en el tanque usando la función generadora next(), así: player.collect(next(recipe)). Luego camina hasta la marca X dorada junto al cartel y usa la función speak() para obtener los números de cantidad necesarios para que el generador produzca el pan y escríbelos en el generador. Los datos se almacenan en una constante llamada "sign" y se llamarían así: player.speak(sign).

Una vez que todos los valores estén ingresados en el generador, entra en la instalación y usa player.place(next(recipe)) en las marcas X oscuras y player.collect(next(recipe)) en las marcas X claras para completar el nivel.

Libro de Código