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

Generadores
Enviar datos a un generador

Objetivo

Recolectar lana y convertirla en hilo usando los husos enviando datos a un generador.

Algunas ovejas tienen demasiado lana y sería mejor esquilarlas y recolectar su lana. Luego puedes poner la lana a través de un huso para producir hilo. Para lograr esto, necesitaremos usar un generador, ya que las cantidades de lana e hilo procesadas pueden variar enormemente.

Primero, define un generador capaz de hilar lana, llamándolo spin(). Este generador necesita estar configurado para usar entrada externa para operar. Lee datos de yield y los coloca en una variable, luego modifica su contenido incrementando su longitud con cada ciclo, finalmente produciendo un resultado.

def spin(): cycle = 1 while True: cycle += 1 yarn = yield yarn = yarn * cycle yield player.speak("You've spun %d ft of yarn" % (yarn))

Debido a que este es un generador, la instrucción while() dentro puede ser pausada y modificada para producir el resultado que queremos. Este nivel de control es la esencia de lo que es un generador y cómo puede ser útil al procesar datos. Para insertar datos en el generador, defínelo y utiliza la función send() para alimentarlo con cualquier dato que desees, por ejemplo:

spindle = spin() # Crea una instancia del generador next(spindle) # Ejecuta un solo paso del generador spindle.send(6) # Introduce datos en el generador # En este caso estás enviando el número 6

Camina hacia la X marcada por las alfombras de colores y mira hacia las ovejas. Hay una constante de diccionario llamada sheep que contiene el valor de cuánta lana puedes esquilar en cada oveja. Usa la función speak() con el diccionario y el color de la alfombra en la que estás parado, para esquilar la lana de la oveja y verificar cuánto has recolectado. Por ejemplo: player.speak(sheep["green"]) .

Hay cuatro (4) alfombras de colores en total: "green" , "red" , "blue" y "orange" . Una vez que hayas esquilado a las ovejas, camina hacia las X oscuras marcadas por cada alfombra de color donde se encuentran los husos. Usa send() para ingresar el número de libras de lana esquilada de cada oveja en su color respectivo en el generador.

Por ejemplo, si cuando esquilas a la oveja en la alfombra "green" esquilas 4 libras de lana, ve a la alfombra "green" junto a los husos y envía esos datos al generador, así:

next(spindle) spindle.send(4)

Haz esto para las cuatro (4) X oscuras sobre las alfombras de colores para completar el nivel.

Libro de Código