Coding for KidsCoding for Kids
Kreativní ÚrovněVýzvyPrůvodce pro Učitele
Hlasovat pro funkce
Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň

Pokročilé seznamy
Mapování, Filtrace, Redukce

Cíl

Dokončete míchání a výrobu zmrzliny pomocí funkcí Map, Filter a Reduce.

Některé příchutě zmrzliny jsou nedostatečné nebo prázdné, ale máme dostatek surovin, abychom je mohli doplnit a vytvořit více zmrzliny. K tomu musíte použít Map, výkonný nástroj, který vám umožní minimalizovat množství kódu, který musíte napsat, tím, že zkracuje smyčky a podmíněný kód. Funkce Filter a Reduce jsou komplementární k funkci Map a poskytují vaší práci potřebnou všestrannost.

Pro začátek je třeba importovat Reduce z knihovny functools, aby bylo možné funkci použít, a to přidáním následujícího kódu na začátek vašeho programu: from functools import reduce. Funkce Map a Filter jsou vestavěné v Pythonu a není třeba je importovat.

Nejdříve musíte sehnat některé ingredience z mrazáku, dojít ke zlatému značkovacímu křížku (X), otočit se ke dveřím a otevřít je pomocí funkce open(). Seberte všechny sklenice s "cream" ve mrazáku a poté jděte ke světelnému značkovacímu křížku (X) na zeleném koberci.

V poli se nacházejí tři (3) konstanty seznamů pojmenované: vanilla, strawberry a chocolate. Každá konstanta obsahuje kombinaci ingrediencí, která tvoří příchuť zmrzliny. U zeleného značkovacího křížku (X) ověřte obsah konstanty seznamu strawberry. Nejprve použijte funkci place() pro vložení "cream", kterou jste si předtím sebrali, a poté funkci speak() pro ověření obsahu konstanty seznamu strawberry.

Jakmile je obsah ověřen, je čas použít funkci Map s konstantou seznamu strawberry, kde jsou všechny prvky desetinná čísla. Pomocí funkce map() můžete zaokrouhlit všechny prvky v seznamu, což nahrazuje nutnost iterovat přes každý prvek v cyklu a zaokrouhlovat je jeden po druhém. Proveďte to tím, že vytvoříte seznam s názvem map1 a použijete funkci map() v kombinaci s konstantou seznamu strawberry a funkcí round(), takto: map1 = list(map(round, strawberry)). Po dokončení použijte funkci speak() s map1 k ověření výsledku.

Jakmile je to hotovo, pokračujeme na Filter, který funguje podobně jako Map, ale vyžaduje použití funkce v kombinaci. Na začátku editoru budete mít přednastavenou funkci s názvem main_ingredients, která určuje, zda je číslo vyšší než číslo 25.

def main_ingredients(value): return value > 25

Místo procházení cyklem můžete tuto funkci použít v kombinaci s funkcí filter() pro vytvoření nového seznamu s prvky, které jsou větší než 25, tedy hlavními ingrediencemi. Vytvořte nový seznam pojmenovaný filter1 a použijte funkci filter() s funkcí main_ingredients a map1 k určení všech hlavních ingrediencí nalezených v seznamu vytvořeném pomocí Map, takto: filter1 = list(filter(main_ingredients, value)). Po dokončení použijte funkci speak() s filter1 k ověření výsledku.

Nyní přejdeme na Reduce, který se používá podobným způsobem jako Filter, ale tentokrát jej můžete využít ke sloučení nebo redukci seznamu na jedinou hodnotu. Podobně jako Filter využívá vlastní funkci, tentokrát nazvanou custom_sum, která dynamicky sčítá dvě čísla.

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

Vytvořte proměnnou pojmenovanou reduce1 a použijte funkci reduce() v kombinaci s funkcí custom_sum a filter1 k zúžení všech položek na jednu jednotku, takto: reduce1 = reduce(custom_sum, filter1). Po dokončení použijte funkci speak() s reduce1 k ověření výsledku.

Nyní když jste dokončili cyklus Map, Filter, Reduce, opakujte stejný cyklus u světelných značkovacích křížků na červených a modrých kobercích. Na červeném koberci použijte konstantu seznamu vanilla a vytvořte map2, filter2 a reduce2. Na modrém koberci použijte konstantu seznamu chocolate a vytvořte map3, filter3 a reduce3.

Jděte k poslednímu světelnému značkovacímu křížku, který se nachází na fialovém koberci, a sečtěte reduce1, reduce2 a reduce3, čímž spojíte hlavní ingredience z příchutí vanilla, strawberry a chocolate. Vytvořte proměnnou pojmenovanou neapolitan a sečtěte všechny výsledky z Reduce, takto: neapolitan = reduce1+reduce2+reduce3. Použijte funkci speak() s touto kombinací k jejímu ověření a funkci place() pro vytvoření Neapolitan zmrzliny a dokončení úrovně.

Kniha Kódu