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

Funzioni Avanzate
Funzioni lambda

Obiettivo

Utilizza le funzioni lambda per documentare alcuni consumabili in modo che possano essere raccolti per la spedizione in un secondo momento.

Alcuni dei frutti e delle bacche nel campo sono quasi pronti per essere raccolti, così potranno essere immagazzinati, spediti e venduti. Sarebbe una buona idea annotare gli articoli che sono quasi pronti in modo da avere una stima di quanti prodotti di questo campo vengono imballati e spediti.

Per ottimizzare il codice, puoi usare le funzioni lambda; questo è un altro modo per creare funzioni personalizzate, ma è più veloce quando le funzioni che stai creando sono più semplici.

# Normal Custom Function def calculate(x , y , z) : return( (x+y+z) *2 ) # Lambda Function calculate = lambda x,y,z : (x + y + z) * 2

Nell'esempio sopra hai due funzioni, una funzione personalizzata e una funzione lambda. Pur essendo scritte in modo diverso, sono funzionalmente identiche; la funzione lambda è semplicemente più facile da usare e può essere impostata in fretta al volo nel mezzo del codice. Detto ciò, il metodo tradizionale per definire funzioni risulta ancora molto utile per sequenze di codice complesse.

Ci sono due (2) tipi di articoli che possono essere categorizzati nel campo: "fruits" e "berries". Di questi due tipi, ci sono tre (3) frutti: apples, pears e oranges; ed esistono tre (3) bacche: red, blue e purple.

Prima imposta la funzione lambda illustrata sopra chiamata calculate, che ci permetterà di ottenere il numero di articoli previsti per la stagione sommando tre elementi e moltiplicandoli per due (2). Crea un'altra funzione lambda chiamata estimate per stimare gli articoli che verranno raccolti, come funzione personalizzata di speak. Infine, imposta una funzione lambda chiamata total che somma due valori insieme e ne sottrae un terzo, chiamato loss.

# Calculate items calculate = lambda x,y,z : (x + y + z) * 2 # Estimate items estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Total all items total = lambda num1, num2, loss : ( (num1 + num2) - loss)

Crea variabili per ciascuno dei tre (3) frutti e somma il numero di quanti di ciascuno sono nel campo. Dirigiti verso il segno X scuro e usa la funzione lambda calculate() con tutte e tre le variabili dei frutti, memorizzando il valore in una variabile personalizzata chiamata fruit_number, in questo modo: fruit_number = calculate(orange,pear,apple). Successivamente, utilizza la funzione lambda estimate() impiegando fruit_number come numero e "fruits" come nome, in questo modo: estimate(fruit_number, "fruits" ).

Una volta terminato con i frutti, cammina verso il segno X chiaro e ripeti l'operazione con le bacche. Imposta variabili per le tre (3) bacche con la quantità di cespugli contata nel campo, poi imposta la funzione lambda nello stesso modo in cui hai fatto con i frutti, in questo modo: berry_number = calculate(red,blue,purple). Utilizza la funzione lambda estimate con berry_number e "berries" come argomenti.

Esiste una costante denominata doc che contiene le stime del mese scorso per il prodotto perso. Dirigiti al magazzino, cammina verso il segno X dorato e usa la funzione speak() con la costante per leggere un documento sul tavolo, in modo da determinare i numeri del mese scorso.

Una volta che conosci i numeri del mese precedente, cammina verso il segno X scuro sul tappeto viola, rivolgiti al tavolo per determinare i totali di questo mese. Crea una variabile chiamata season per calcolare i totali della stagione, utilizzando fruit_number e berry_number come numeri, e impiegando il numero ottenuto dalla costante doc come argomento per la perdita, in questo modo: season = total(berry_number,fruit_number, number found in doc constant)

Concludi utilizzando la funzione lambda estimate() impiegando la variabile season come argomento numerico e "products" come argomento nome, in modo da completare il livello.

Libro del Codice