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

Haladó Függvények
Zárások

Célkitűzés

Szabályozd a gazdaság vízellátását zárások beállításával és használatával.

Négy víztartály van megtervezve, hogy öntözzék a környező mezőgazdasági területeket, ideje átváltani őket annak érdekében, hogy a megfelelő mennyiségű víz kerüljön a megfelelő helyekre. Ennek érdekében sokkal könnyebbé tehetjük a feladatot a zárások használatával.

A zárások egymásba ágyazott függvények, melyek célja az adatok kapszulázása, ez csökkenti a használt változók számát, és elrejti az adatokat a függvényen belül, így külsőleg nem manipulálhatók, más szóval "lezárja" a függvényt.

Annak érdekében, hogy szabályozzuk a tartályok vízszintjét, létrehozunk egy egymásba ágyazott függvényt, amely szorzóként működik. Ez a függvény ugyanolyan módon működik, mint egy ciklus: a külső függvény, melynek neve multiplier_of(), egy olyan paramétert vár, melyet az belső, multiplier() nevű függvény argumentumával szoroz meg.

# Nested Function def multiplier_of(n): def multiplier(number): return number*n return multiplier

A beállítás után zárjuk le a függvényt a zárások alkalmazásával, így megakadályozva a hozzáférést az értékeikhez, és megszilárdítva használatukat.

# Set up Closure that multiplies any number by 2 multiply_by_2 = multiplier_of(2) # Uses closure to display a number on screen player.speak( multiply_by_2(4) ) # The number displayed is 8, the formula is [2 x 4 = 8]

A fenti zárás neve multiply_by_2(), és a korábban létrehozott egymásba ágyazott függvényt használja egy megadott argumentummal, ami ebben az esetben a 2, azaz a zárás úgy van beállítva, hogy bármely számot kettővel szorozzon. Ennek eredményeként bármely argumentumként hozzáadott számot kettővel szoroz, és ezt az értéket mivel lezártuk, nem lehet megváltoztatni.

Térjünk rá a tartályok vízellátásának szabályozására: állíts be három (3) zárást: multiply_by_2, multiply_by_3 és multiply_by_5. Mindegyiket kézzel konfiguráld ugyanazzal a formátummal, mint az előző példában: multiply_by_2 = multiplier_of(2).

Ebben a szinten van egy tanks nevű szótári állandó, amely hat (6) színt tartalmaz indexként: "red", "blue", "orange", "purple", "yellow" és "green". Minden indexhez tartozik egy szám, amely azt mutatja, mennyi víz áramlik a tartály oldalán, ezt a számot fogjuk használni a tartály szabályozásához a korábban tárgyalt "multiply_by" zárások segítségével.

Ennek megkönnyítésére létrehozunk egy regulate_water() nevű függvényt a szerkesztőben, amely két argumentumot vesz fel: a színt, amely az előbb ismertetett indexeket reprezentálja, és a szorzó függvényt, amely a használni kívánt zárás. A függvény használatának egyik példája a következő: regulate_water("red", multiply_by_2).

Menj a sötét X-ekkel jelölt színes szőnyegekhez, állj szembe a tartályokkal, használd a regulate_water() függvényt, és add meg a szőnyeg színét első argumentumként, valamint a megfelelő szorzó zárást második argumentumként. Az egyes színes szőnyegekhez használandó szorzók a következők:

multiply_by_2 - "red" és "green" multiply_by_3 - "blue" és "purple" multiply_by_5 - "orange" és "yellow"

Szabályozd a vízellátást minden tartály oldalán, hogy teljesítsd a szintet.

Kódkönyv