Coding for KidsCoding for Kids
Poziomy KreatywneWyzwaniaPrzewodnik dla Nauczycieli
Głosuj na funkcje
Zaawansowany kurs programowania w Pythonie
Rozdział
>
Poziom

Zaawansowane listy
Mapy, Filtruj, Redukuj

Cel

Ukończ miksowanie i produkcję lodów, używając funkcji Map, Filter i Reduce.

Niektóre smaki lodów są niewystarczające lub puste, ale mamy wystarczająco dużo składników, aby je uzupełnić i zrobić więcej lodów. W tym celu musisz użyć funkcji Map, potężnego narzędzia, które pozwala zminimalizować ilość kodu przez łączenie pętli i rozgałęzień. Funkcje Filter i Reduce są uzupełnieniem funkcji Map i zapewniają niezbędną wszechstronność Twojego kodowania.

Na początek musisz zaimportować funkcję Reduce z biblioteki functools, aby móc z niej korzystać, dodając ten kod na początku swojego programu: from functools import reduce. Funkcje Map i Filter są wbudowane w Pythona i nie wymagają importu.

Najpierw musisz zabrać kilka składników z zamrażarki, przejść do złotego znaku X, stanąć twarzą do drzwi i je otworzyć, używając funkcji open(). Weź wszystkie słoiki z "cream" z zamrażarki, a następnie przejdź do jasnego znaku X nad zielonym dywanem.

W polu znajdują się trzy stałe listy o nazwach: vanilla, strawberry i chocolate. Każda stała zawiera kombinację składników, która tworzy dany smak lodów. Przy zielonym znaku X zweryfikuj zawartość stałej listy strawberry. Najpierw użyj funkcji place(), aby umieścić wcześniej zabrane "cream", a następnie funkcji speak(), aby zweryfikować zawartość stałej listy strawberry.

Po weryfikacji nadszedł czas, aby użyć funkcji Map wraz z listą strawberry, której zawartość składa się z wartości dziesiętnych. Używając funkcji map(), możesz zaokrąglić wszystkie elementy w liście, co zastępuje konieczność iteracji każdego elementu w pętli, aby je pojedynczo zaokrąglić. Aby to zrobić, utwórz listę o nazwie map1 i użyj funkcji map() w połączeniu z listą strawberry oraz funkcją round(), w następujący sposób: map1 = list(map(round, strawberry)). Po zakończeniu użyj funkcji speak() z map1, aby zweryfikować wynik.

Po tym przechodzimy do funkcji Filter, która działa podobnie jak Map, ale wymaga użycia funkcji pomocniczej. Na górze edytora znajdziesz predefiniowaną funkcję o nazwie main_ingredients, która sprawdza, czy liczba jest większa niż 25.

def main_ingredients(value): return value > 25

Zamiast iterować w pętli możesz użyć tej funkcji w połączeniu z funkcją filter(), aby utworzyć nową listę zawierającą elementy większe niż 25, czyli główne składniki. Utwórz nową listę o nazwie filter1 i zastosuj funkcję filter() z main_ingredients oraz map1, aby wyłonić wszystkie główne składniki znajdujące się w liście utworzonej przez Map, w następujący sposób: filter1 = list(filter(main_ingredients, value)). Po zakończeniu użyj funkcji speak() z filter1, aby zweryfikować wynik.

Teraz przechodzimy do funkcji Reduce, która działa podobnie jak Filter, ale umożliwia zredukowanie listy do pojedynczej wartości. Podobnie jak Filter, używa niestandardowej funkcji, tym razem o nazwie custom_sum, która dynamicznie dodaje do siebie dwie liczby.

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

Utwórz zmienną o nazwie reduce1 i użyj funkcji reduce() w połączeniu z funkcją custom_sum oraz listą filter1, aby zredukować wszystkie elementy do jednej wartości, w następujący sposób: reduce1 = reduce(custom_sum, filter1). Po zakończeniu użyj funkcji speak() z reduce1, aby zweryfikować wynik.

Po ukończeniu cyklu Map, Filter, Reduce powtórz ten sam cykl przy jasnych znakach X na czerwonych i niebieskich dywanach. Na czerwonym dywanie użyj stałej listy vanilla i utwórz zmienne map2, filter2 oraz reduce2. Na niebieskim dywanie użyj stałej listy chocolate i utwórz zmienne map3, filter3 oraz reduce3.

Przejdź do ostatniego jasnego znaku X, który znajduje się nad fioletowym dywanem, i dodaj reduce1, reduce2 oraz reduce3, łącząc główne składniki: waniliowe, truskawkowe i czekoladowe. Utwórz zmienną o nazwie neapolitan i zsumuj wszystkie wyniki z funkcji Reduce, w następujący sposób: neapolitan = reduce1+reduce2+reduce3. Użyj funkcji speak() z tą kombinacją, aby ją zweryfikować, oraz funkcji place(), aby stworzyć lody neapolitańskie i ukończyć poziom.

Księga Kodów