Coding for KidsCoding for Kids
Livelli CreativiSfideGuida per Insegnanti
Vota per le funzionalità
Corso Avanzato di Sviluppo Python
Capitolo
>
Livello

Generatori
Invio dei dati a un generatore

Obiettivo

Raccogli la lana e filala in filato utilizzando i fusi inviando dati a un generatore.

Alcune pecore stanno diventando un po' troppo lanose, sarebbe meglio tosarle e raccogliere la loro lana. Puoi quindi far passare la lana attraverso un fuso per produrre filato. Per fare ciò avremo bisogno di utilizzare un generatore, poiché le quantità di filato e di lana processate possono variare notevolmente.

Per prima cosa, definisci un generatore capace di filare il filato, chiamandolo spin(). Questo generatore deve essere impostato per utilizzare input esterni per operare. Legge i dati da yield e li assegna a una variabile, quindi ne modifica il contenuto aumentando la sua lunghezza ad ogni ciclo, per infine produrre un risultato.

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

Poiché si tratta di un generatore, l'istruzione while() al suo interno può essere messa in pausa e modificata per produrre l'output desiderato; questo livello di controllo è il cuore di ciò che un generatore è e di come possa essere utile nel processare i dati. Per inserire dati nel generatore, definiscilo e utilizza la funzione send() per inviarci qualunque dato tu desideri, per esempio:

spindle = spin() # Crea un'istanza del generatore next(spindle) # Esegui il generatore per un singolo passo spindle.send(6) # Inserisci dati nel generatore # In questo caso stai inviando il numero 6

Dirigiti verso i segni X luminosi accanto ai tappeti colorati e affronta le pecore. Esiste una costante dizionario chiamata sheep che contiene il valore della lana che puoi tosare da ogni pecora. Usa la funzione speak() con il dizionario e il colore del tappeto su cui ti trovi, per tosare la lana delle pecore e controllare quanta ne hai raccolto. Per esempio: player.speak(sheep["green"]).

Ci sono in totale quattro (4) tappeti colorati: "green", "red", "blue" e "orange". Una volta tosate le pecore, dirigiti verso i segni X scuri accanto a ciascun tappeto colorato, dove si trovano i fusi. Usa send() per inserire nel generatore il numero di libbre di lana tosata da ciascuna pecora, nel rispettivo colore.

Per esempio, se tosando le pecore nel tappeto "green" ottieni 4 libbre di lana, recati al tappeto "green" accanto ai fusi e invia quei dati al generatore, come segue:

next(spindle) spindle.send( 4)

Fai questo per tutti i quattro (4) segni X scuri sui tappeti colorati per completare il livello.

Libro del Codice