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

Generatori
Avanzamento manuale di un generatore

Obiettivo

Utilizza il generatore in una sequenza manuale per assemblare e produrre materiali per fare il pane.

Davanti a te c'è un impianto dove puoi assemblare dell'impasto per il pane utilizzando le presse. Normalmente useresti la funzione combine() per unire i materiali, ma non è il caso qui: i materiali devono essere prima raffinati prima di poter essere assemblati.

Per questo compito possiamo usare i generatori poiché possono essere personalizzati per produrre diversi tipi di file, oltre a poter avere la loro sequenza richiamata su comando anziché essere emessa automaticamente come avviene per funzioni e cicli. Ecco un esempio:

def bread(): yield 5 yield "grain"

Il codice sopra definisce un generatore con due istruzioni yield, una delle quali produce un numero reale e l'altra una stringa. Possiamo generare i valori del generatore a piacimento usando la funzione next(). Così:

recipe = bread() # Imposta il generatore player.place(next(recipe)) # Viene richiamato il primo valore player.collect(next(recipe)) # Viene richiamato il secondo valore

Nell'esempio sopra, il generatore viene inizializzato e la funzione next() viene utilizzata con il generatore per richiamare il primo valore yield da utilizzare in una funzione place(). Questo viene ripetuto con il secondo valore che invece viene usato in una funzione collect(). Ciò rende facile richiamare valori di vari tipi in una sequenza senza dover utilizzare più liste o variabili.

Un generatore chiamato bread() sarà definito nell'editor di codice, ma richiederà dei numeri di quantità per ogni ingrediente affinché tu possa raffinare l'impasto per il pane. Questi numeri sono scritti sull'insegna accanto all'impianto. Inizializza il generatore per l'uso facendogli riferimento, in questo modo: recipe = bread()

Per prima cosa, dirigiti verso il segno X chiaro accanto al serbatoio del latte e collect() l'ultimo del latte nel serbatoio utilizzando la funzione next() del generatore, in questo modo: player.collect(next(recipe)). Poi, dirigiti verso il segno X dorato accanto all'insegna e usa la funzione speak() per ottenere i numeri di quantità necessari affinché il generatore produca il pane, annotandoli nel generatore. I dati sono memorizzati in una costante chiamata "sign" e verrebbero richiamati così: player.speak(sign).

Una volta inseriti tutti i valori nel generatore, entra nell'impianto e usa player.place(next(recipe)) sui segni X scuri e player.collect(next(recipe)) sui segni X chiari per completare il livello.

Libro del Codice