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

Decoratori
Decoratori più complessi

Obiettivo

Metti le pizze nel forno alla temperatura corretta e prepara le insalate utilizzando decoratori con argomenti.

Ora che le pizze sono già pronte, è il momento di cuocerle nei forni. Una volta fatto, dobbiamo preparare le insalate da accompagnare alle pizze una volta pronte. Puoi eseguire queste operazioni utilizzando decoratori con argomenti; in modo simile alle funzioni personalizzate, puoi anche passare argomenti attraverso i tuoi decoratori.

Le pizze devono essere messe nel forno, ma prima devi raccogliere altra firewood in fondo a sinistra della mappa. Una volta raccolto, prendi il cestino al bancone vicino al forno a sinistra; questo cestino contiene pizza da infornare.

Nell'editor di codice è stata predisposta una funzione e il suo decoratore. La funzione serve a posizionare e cuocere la pizza nel forno; il decoratore verifica se il forno ha la temperatura corretta e, in caso contrario, viene posizionata firewood al suo posto.

def place_oven(func): def check(temp): if temp < 450: player.speak("Oven is not hot enough") player.open() player.place("firewood") player.close() return return func(temp) return check @place_oven def bake_pizza(temp): player.open() player.place("pizza") player.close() player.speak("I am baking Pizza at %d degrees" % (temp))

Cammina verso i segni X chiari e usa la funzione read() mentre sei di fronte al forno per identificare la temperatura. Completa l'operazione scrivendo la funzione decorata bake_pizza() e aggiungendo la temperatura letta come argomento, per esempio: bake_pizza(450).

Mentre posizioni le pizze e il legno nei forni, fermati al segno X dorato e rivolgi lo sguardo verso l'armadietto; qui puoi raccogliere gli ingredienti per preparare le insalate. Attualmente, gli ingredienti per l'insalata sono memorizzati in una lista annidata, come indicato nell'editor di codice, tuttavia questa lista è disordinata ed è nel tuo interesse avere gli elementi memorizzati in una lista adeguata per poterli usare nelle insalate.

cabinet = [["lettuce"], ["carrot" ,"tomato"] , ["oil" , "ranch", "cesar"] , ["cheese"]] ingredients = [item for sublist in cabinet for item in sublist]

Crea una lista chiamata ingredients e usa una List Comprehension per "appiattire" la lista annidata. Questo è il processo per rimuovere le liste interne dalla lista annidata in modo che tutti gli elementi siano ora insieme in un'unica lista anziché in più liste più piccole. Dopo che la lista è stata appiattita, utilizza la funzione speak() con la lista per verificare gli ingredienti che utilizzerai.

Dopo che tutti gli elementi necessari sono stati posizionati nei forni e la lista ingredients è stata sistemata, dirigiti verso i segni X scuri per creare le insalate. Nell'editor è stata predisposta una funzione e un decoratore; questa volta non sono collegati e devono essere dichiarati manualmente, per esempio: salad = add_toppings(toss_salad("ranch","carrot")). Questa serie di funzioni accetta due (2) argomenti: dressing e vegetable.

def add_toppings(func): def add(dressing, vegetable): player.place(dressing) player.place(vegetable) func(dressing, vegetable) return add @add_toppings def toss_salad(dressing, vegetable): player.combine("lettuce", dressing, vegetable) player.speak("I am preparing salad with %s dressing and %s" % (dressing, vegetable))

Ogni segno X scuro è posizionato su un tappeto colorato; ognuno ne ha una diversa insalata che deve essere creata utilizzando gli ingredienti raccolti dall'armadietto. Sul tappeto giallo, crea un'insalata utilizzando: cesar e cheese, sul tappeto verde crea un'insalata usando: oil e tomato, sul tappeto blu crea un'insalata usando: ranch e carrot.

Una volta che le tre (3) insalate sono state assemblate utilizzando la funzione decorata toss_salad(dressing, vegetable) in questo formato, il livello sarà completato.

Libro del Codice