Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint
Haladó listák
Leképezések, Szűrés, Redukció
Cél
Fejezd be a fagylalt keverését és elkészítését Maps, Filter és Reduce használatával.
Néhány fagylaltíz kevés vagy üres, de elegendő alapanyagot tartunk, hogy pótoljuk és több fagylaltot készítsünk. Ehhez a Map-et kell használnod, egy erőteljes eszközt, amely lehetővé teszi, hogy minimalizáld a megírandó kód mennyiségét a ciklusok és elágazó kódok tömörítésével. A Filter és Reduce függvények kiegészítik a Map függvényt, és nagyfokú rugalmasságot biztosítanak a kódolásban.
A kezdéshez importálnod kell a Reduce-t a functools könyvtárból, hogy használhasd a függvényt, ehhez add hozzá ezt a kódot a programod elejére: from functools import reduce. A Map és Filter függvények be vannak építve a Pythonba, így nem szükséges őket importálni.
Először venned kell néhány hozzávalót a "walk in freezer"-ből, sétálj az arany X jelzéshez, fordulj az ajtó felé és nyisd ki az open() függvény segítségével. Fogd el a fagyasztóból az összes, "cream" feliratú üveget, majd sétálj a zöld szőnyeg feletti fényes X jelzéshez.
A pályán három (3) lista konstans található, melyek nevei: vanilla, strawberry és chocolate. Mindegyik konstans olyan hozzávalók kombinációját tartalmazza, amelyek az adott fagylaltízt alkotják. A zöld X jelzésnél ellenőrizd a strawberry lista tartalmát. Először használd a place() függvényt az előzőleg összegyűjtött "cream" lerakására, majd a speak() függvénnyel ellenőrizd a strawberry lista tartalmát.
Miután ellenőrizted, ideje használni a Map függvényt a strawberry lista konstanssal, melynek elemei tizedes számok. A map() függvény segítségével lekerekítheted a lista összes elemét, így elkerülheted, hogy egyenként iteráld a ciklusban az elemeket a lekerekítés érdekében. Ehhez hozz létre egy map1 nevű listát, és használd a map() függvényt a strawberry listával és a round() függvénnyel együtt, így: map1 = list(map(round, strawberry)). Miután kész, használd a speak() függvényt a map1-el az eredmény ellenőrzéséhez.
Miután ez megtörtént, lépjünk tovább a Filter-re, ami hasonlóan működik, mint a Map, de ehhez egy függvény használata szükséges. A szerkesztő tetején találsz egy előre definiált main_ingredients nevű függvényt, amely azt határozza meg, hogy egy szám nagyobb-e, mint a 25.
A ciklus helyett ezt a függvényt használhatod a filter() függvénnyel együtt, hogy egy új listát alkoss olyan elemekből, amelyek 25 fölött vannak, ezek a fő összetevők. Hozz létre egy új listát filter1 néven, és alkalmazd a filter() függvényt a main_ingredients és a map1 segítségével, hogy meghatározd az összes fő összetevőt, amit az általad létrehozott Map listában találtál, így: filter1 = list(filter(main_ingredients, value)). Miután kész, használd a speak() függvényt a filter1-el az eredmény ellenőrzéséhez.
Most áttérünk a Reduce-re, amely hasonlóan működik, mint a Filter, de egy listát egy egységgé fog össze. Akárcsak a Filter, ez is egy egyedi függvényt használ, ezúttal a custom_sum nevűt, amely dinamikusan összead két számot.
def custom_sum(first, second):
return first + second
Hozz létre egy reduce1 nevű változót, és használd a reduce() függvényt a custom_sum függvénnyel és a filter1-el együtt, hogy az összes elemet egyetlen egységgé egyesítsd, így: reduce1 = reduce(custom_sum, filter1). Miután kész, használd a speak() függvényt a reduce1-el az eredmény ellenőrzéséhez.
Miután befejezted a Map, Filter, Reduce ciklust, ismételd meg ugyanezt a ciklust a piros és kék szőnyegek feletti világító X jelzéseknél. A piros szőnyegen használd a vanilla lista konstansot, és hozz létre map2, filter2 és reduce2 változókat. A kék szőnyegen használd a chocolate lista konstansot, és hozz létre map3, filter3 és reduce3 változókat.
Sétálj az utolsó fényes X jelzéshez, amely a lila szőnyeg felett található, majd add össze a reduce1, reduce2 és reduce3 értékeit, amelyek a vanilla, strawberry és chocolate fő összetevőit tartalmazzák. Hozz létre egy neapolitan nevű változót, és add össze az összes Reduce eredményt, így: neapolitan = reduce1+reduce2+reduce3. Használd a speak() függvényt az összeállítás ellenőrzéséhez, majd a place() függvényt annak felhasználásához, hogy megalkosd a Neapolitan fagylaltot és így teljesítsd a szintet.