Coding for KidsCoding for Kids
Kreativa NivåerUtmaningarLärarguide
Rösta på funktioner
Avancerad Pythonutvecklingskurs
Kapitel
>
Nivå

Avancerade listor
Mappar, Filter, Reducera

Mål

Avsluta blandningen och produktionen av glass genom att använda Maps, Filter och Reduce.

Några av glassmakorna är på låga nivåer eller helt tomma, men vi har tillräckligt med material för att kompensera och skapa mer glass. För att göra detta måste du använda Map, ett kraftfullt verktyg som låter dig minimera mängden kod du behöver skriva genom att kondensera loopar och villkorsstyrd kod. Funktionerna Filter och Reduce kompletterar Map-funktionen och ger den flexibilitet som behövs i din kod.

För att komma igång behöver du importera Reduce från biblioteket functools för att kunna använda funktionen genom att lägga till följande kod i början av ditt program: from functools import reduce . Funktionen Map och Filter är inbyggda i Python och behöver inte importeras.

Först måste du hämta några ingredienser från walk in-freezern, gå till den gyllene X-markören, vänd dig mot dörren och öppna den med open()-funktionen. Plocka upp alla burkar med "cream" i frysen och gå sedan till den ljusa X-markören ovanpå den gröna mattan.

Det finns tre (3) listkonstanter på fältet med namnen: vanilla, strawberry och chocolate. Varje konstant har en kombination av ingredienser som utgör glassmaken. Vid den gröna X-markören, verifiera innehållet i listkonstanten strawberry. Använd först place()-funktionen för att lägga de "cream" du tidigare hämtade, och använd sedan speak()-funktionen för att verifiera innehållet i listkonstanten strawberry.

När detta är verifierat är det dags att använda Map-funktionen med listkonstanten strawberry; innehållet i listan består av decimaltal. Genom att använda funktionen map() kan du avrunda alla element i en lista, vilket eliminerar behovet av att iterera genom varje element i en loop för att avrunda dem ett i taget. För att göra detta, skapa en lista med namnet map1 och använd funktionen map() i kombination med listan strawberry och funktionen round(), på följande sätt: map1 = list(map(round, strawberry)). När detta är klart, använd speak()-funktionen med map1 för att verifiera resultatet.

När detta är gjort går vi vidare till Filter, som fungerar på samma sätt som Map men kräver istället att en funktion används i kombination. Överst i redigeraren har du en förinställd funktion med namnet main_ingredients som används för att avgöra om ett tal är större än 25.

def main_ingredients(value): return value > 25

Istället för att gå igenom en loop kan du använda denna funktion tillsammans med filter()-funktionen för att skapa en ny lista med objekt som är över 25, vilka utgör huvudingredienserna. Skapa en ny lista med namnet filter1 och applicera funktionen filter() med main_ingredients och map1 för att avgöra alla huvudingredienser som finns i den Map-lista du skapade, på följande sätt: filter1 = list(filter(main_ingredients, value)). När detta är gjort, använd speak()-funktionen med filter1 för att verifiera resultatet.

Nu går vi vidare till Reduce, som används på samma sätt som Filter, men istället kan du använda den för att sammanfoga eller reducera en lista till en enda enhet. Precis som med Filter använder den en anpassad funktion, denna gång kallad custom_sum, som dynamiskt adderar två tal.

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

Skapa en variabel med namnet reduce1 och använd funktionen reduce() i kombination med funktionen custom_sum och filter1 för att konsolidera alla objekt till en enda enhet, på följande sätt: reduce1 = reduce(custom_sum, filter1). När detta är klart, använd speak()-funktionen med reduce1 för att verifiera resultatet.

Nu när du har slutfört cykeln med Map, Filter, Reduce, upprepa samma cykel vid de ljusa X-markörerna på de röda och blå mattorna. På den röda mattan, använd listkonstanten vanilla och skapa map2, filter2 och reduce2. På den blå mattan, använd listkonstanten chocolate och skapa map3, filter3 och reduce3.

Gå till den sista ljusa X-markören som ligger över den lila mattan, och lägg ihop reduce1, reduce2 och reduce3 för att sammanställa huvudingredienserna för vanilj, jordgubbe och choklad. Skapa en variabel med namnet neapolitan och summera alla Reduce-resultat, på följande sätt: neapolitan = reduce1+reduce2+reduce3. Använd speak()-funktionen med kombinationen för att verifiera den, och använd place()-funktionen med den för att skapa Neapolitan-glass och slutföra nivån.

Kodbok