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

Liste avanzate
Mappa, Filtra, Riduci

Obiettivo

Finisci di mescolare e produrre il gelato utilizzando Map, Filter e Reduce.

Alcuni gusti di gelato sono bassi o esauriti, ma abbiamo materiali sufficienti per compensare e preparare ulteriore gelato. Per fare questo, devi usare Map, uno strumento potentissimo che ti permette di ridurre la quantità di codice da scrivere condensando i cicli e il codice condizionale. Le funzioni Filter e Reduce sono complementari alla funzione Map e forniscono la versatilità tanto necessaria al tuo codice.

Per iniziare, devi importare la funzione Reduce dalla libreria functools in modo da poterla utilizzare, aggiungendo questo codice all'inizio del tuo programma: from functools import reduce. Le funzioni Map e Filter sono integrate in Python e non necessitano di essere importate.

Prima di tutto, devi prendere alcuni ingredienti dal congelatore a vista, recarti al segno X dorato, girarti verso la porta e aprirla utilizzando la funzione open(). Prendi tutti i vasetti di "cream" presenti nel congelatore, poi dirigiti verso il segno X luminoso sul tappeto verde.

Ci sono tre (3) costanti di lista nel campo, denominate: vanilla, strawberry e chocolate. Ogni costante contiene una combinazione di ingredienti che costituiscono il gusto del gelato. Al segno X verde, verifica il contenuto della costante di lista strawberry. Prima utilizza la funzione place() per depositare il "cream" che hai preso in precedenza, quindi usa la funzione speak() per verificare il contenuto della costante di lista strawberry.

Una volta verificato, è il momento di usare la funzione Map con la costante di lista strawberry; il contenuto della lista è composto da numeri decimali. Utilizzando la funzione map(), puoi arrotondare tutti gli elementi di una lista, eliminando la necessità di iterare ogni elemento in un ciclo per arrotondarli uno per uno. Per fare questo, crea una lista chiamata map1 e usa la funzione map() in combinazione con la lista strawberry e la funzione round(), in questo modo: map1 = list(map(round, strawberry)). Una volta fatto, usa la funzione speak() con map1 per verificare il risultato.

Una volta completato questo passaggio, passiamo a Filter, che funziona in modo simile a Map ma, invece, richiede l'uso di una funzione in combinazione. In cima all'editor troverai una funzione preimpostata chiamata main_ingredients, che viene utilizzata per determinare se un numero è maggiore di 25.

def main_ingredients(value): return value > 25

Invece di utilizzare un ciclo, puoi usare questa funzione insieme alla funzione filter() per comporre una nuova lista con gli elementi maggiori di 25, che corrispondono agli ingredienti principali. Crea una nuova lista chiamata filter1 e applica la funzione filter() con main_ingredients e map1 in modo da selezionare tutti gli ingredienti principali trovati nella lista creata con Map, in questo modo: filter1 = list(filter(main_ingredients, value)). Una volta fatto, usa la funzione speak() con filter1 per verificare il risultato.

Ora passiamo a Reduce, che viene utilizzato in maniera simile a Filter, ma permette di comprimere o ridurre una lista in un'unica unità. Proprio come Filter, utilizza una funzione personalizzata, questa volta chiamata custom_sum, che somma dinamicamente due numeri.

def custom_sum(first, second): return first + second

Crea una variabile chiamata reduce1 e usa la funzione reduce() in combinazione con la funzione custom_sum e filter1 in modo da consolidare tutti gli elementi in un'unica unità, in questo modo: reduce1 = reduce(custom_sum, filter1). Una volta fatto, usa la funzione speak() con reduce1 per verificare il risultato.

Ora che hai completato il ciclo Map, Filter, Reduce, ripeti lo stesso ciclo sui segni X luminosi presenti sui tappeti rosso e blu. Sul tappeto rosso, usa la costante di lista vanilla e crea map2, filter2 e reduce2. Sul tappeto blu, usa la costante di lista chocolate e crea map3, filter3 e reduce3.

Dirigiti verso l'ultimo segno X luminoso, quello presente sul tappeto viola, e somma reduce1, reduce2 e reduce3, unendo così gli ingredienti principali di vaniglia, fragola e cioccolato. Crea una variabile chiamata neapolitan e somma tutti i risultati di Reduce, in questo modo: neapolitan = reduce1+reduce2+reduce3. Usa la funzione speak() con la combinazione per verificarla e la funzione place() per utilizzarla al fine di creare il gelato napoletano e completare il livello.

Libro del Codice