Coding for KidsCoding for Kids
Kreatív SzintekKihívásokTanári Útmutató
Szavazzon a funkciókra
Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint

Dekorátorok
Dekorátorok optimalizálása

Cél

Gyűjtsd össze az alapanyagokat és készíts különféle pizzákat dekorátorok segítségével.

Miután a sütők készen állnak, itt az ideje, hogy pizzákat készítsünk, amelyeket később megsüthetünk. Most, hogy már tudjuk, hogyan kell használni a dekorátorokat, egy kicsit optimalizálhatjuk őket. Ha a kódban az @ szimbólumot használjuk a dekorátor neve után, és ezt a kódot a dekorált függvény fölé helyezzük, automatikusan csatolhatjuk a dekorátort anélkül, hogy változót használnánk. Például:

# Decorator def create_pizza(func): def set(): pizza = ["dough","red sauce","cheese"] player.combine(pizza) func() return set # Function being decorated with @ @create_pizza def peperoni_pizza(): player.place("Peperoni") player.speak("Peperoni Pizza has been prepped") # Using pre-decorated function peperoni_pizza()

Érdemes megjegyezni, hogy ez a technika leegyszerűsíti a folyamatot azáltal, hogy egy függvény előre dekorált, azonban néha mégis célszerű lehet a dekorátort egy változóhoz hozzárendelni a nagyobb rugalmasság érdekében.

Kezdésnek sétálj a sárga X jelzéshez, és vedd fel a pizza elkészítéséhez szükséges alapanyagokat. A pizza elkészítéséhez szükséges alapanyagok: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" és "pineapple". Ezeknek az alapanyagoknak a többsége egy, a kamra polcait reprezentáló mátrixban található. Használj list comprehension-t, hogy az összes, felvenni kívánt elemet elmentsd egy listába.

shelves = [ ["cheese", "dough", "jar"], ["jar", "red sauce", "jar"], ["peperoni", "jar" , "ham"], ["olive", "pepper", "onions"] ] ingredients = [ item for row in shelves for item in row if not "jar" in item]

A fenti kódban az ingredients lista végigiterál a shelves nevű mátrix sorain, és kiszűri az összes olyan elemet, amely a "jar"-t tartalmazza. Ez a list comprehension időt takarít meg, mivel nem kell mindent kézzel hozzáadni. Használd a speak() függvényt az alapanyagok listájával, hogy ellenőrizd a felhasználni kívánt elemeket.

Miután az összes alapanyagot összegyűjtötted, kivéve az "pineapple"-t, a pizzakészítő függvényekhez a place() függvényeket kell hozzáadni a funkcióik teljesítéséhez. Ezek a függvények a kódszerkesztőben vannak előkészítve, és a következő nevűek: peperoni_pizza() amelyhez szükség van a "peperoni"-ra, vegetable_pizza() amelyhez szükség van az "olive", "pepper", "onion" elemekre, valamint a pineapple_pizza() amelyhez a "ham" és a "pineapple" szükséges.

Sétálj a sötét X jelzésű helyekre, és használd a dekorált függvényeket a pizzák elkészítéséhez. A piros szőnyegekkel jelölt X pontokon készítsd el a peperoni_pizza()-t, a zöld szőnyegeken a vegetable_pizza()-t, és a sárga szőnyegeken a pineapple_pizza()-t. Útközben a sárga szőnyeg felé haladva állj meg a világos X jelzésnél, nézz szembe a szekrénnyel, és használd a collect() függvényt, hogy felvedd az "pineapple"-t. Készítsd elő az összes pizzát, hogy sikeresen teljesítsd a szintet.

Kódkönyv