Corso Avanzato di Sviluppo Python
Capitolo
>
Livello
Funzioni Avanzate
Funzioni annidate
Obiettivo
Raccogli, ridistribuisci e riponi il tessuto prodotto dalle macchine utilizzando funzioni annidate.
A volte vorrai inserire funzioni all'interno di altre funzioni per espandere le capacità della funzione stessa. Queste sono chiamate funzioni annidate o funzioni interne, e hanno vari utilizzi, dalla creazione di codice semplice e riutilizzabile all'interno di una funzione, fino a proteggere le tue funzioni da manipolazioni esterne.
All'interno del laboratorio ci sono diverse macchine per la produzione del tessuto: alcune dispongono di tessuto pronto per essere riposto, altre necessitano di filo per completare la produzione del tessuto. Ognuna ha davanti un tappeto "red" o "green" che ne indica l'uso. Nell'editor di codice verrà scritta una funzione che ci permetterà di far funzionare la macchina e di raccogliere o posizionare i materiali dalla macchina.
def operate_machine(color):
def collect_cloth():
# Collect Code
player.speak("Cloth is ready for storage")
def place_thread():
# Place Code
player.speak("Machine needed more materials")
if color == "green":
collect_cloth()
if color == "red":
place_thread()
La funzione si chiama operate_machine e accetta un argomento chiamato color. A seconda del tappeto di colore che si trova davanti alla macchina, inserendo come argomento "red" o "green" il funzionamento della macchina cambierà, permettendoti di posizionare o raccogliere gli oggetti.
All'interno della funzione troverai due funzioni annidate, chiamate collect_cloth() e place_thread(), utilizzate per le finalità indicate dai loro nomi. Mancano delle righe di codice necessarie per eseguire le loro azioni: in collect_cloth() aggiungi la riga player.collect("cloth"), seguita da player.speak("Quilt is ready for storage"), e in place_thread() aggiungi la riga player.place("thread") seguita da player.speak("Machine needed more materials").
Una volta aggiunte le righe di codice mancanti alle funzioni annidate, recati sul segno X luminoso davanti al contenitore e raccogli "thread" da utilizzare nella macchina, come in questo esempio: player.collect("thread").
Recati sui segni X scuri all'interno del laboratorio e utilizza la funzione personalizzata operate_machine mentre ti trovi di fronte alle macchine. Aggiungi come argomento "red" o "green" a seconda del tappeto colorato su cui si trova il segno X, per esempio: operate_machine("red"). Questo ti permetterà di posizionare il filo e di raccogliere il tessuto.
Una volta raccolto tutto il tessuto, recati sul segno X dorato accanto al contenitore nella parte posteriore e utilizza la funzione place() per riporlo. Crea una variabile chiamata cloths, assegnale il numero di tessuti che hai raccolto e riponila nel contenitore per completare il livello, come in questo esempio: player.place(cloths).