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
Beágyazott függvények

Cél

Gyűjtsd össze, oszd el újra és tárold a gépek által előállított szövetet beágyazott (nested) függvények segítségével.

Néha szükséged lehet arra, hogy egy függvényt egy másik függvényen belül használj, ezzel kibővítve annak képességeit. Ezeket beágyazott függvényeknek vagy belső függvényeknek nevezzük, amelyek számos célra használhatók, az egyszerűen újrahasználható kód létrehozásától egészen a függvények külső manipuláció elleni védelméig.

A műhelyben több szövetkészítő gép található, melyek közül néhányon a tárolásra kész szövet van, míg másoknál a szövet előállításának befejezéséhez szükséges fonal hiányzik. Mindegyik előtt egy "red" vagy "green" szőnyeg helyezkedik el, amely jelzi, hogyan kell használni a gépet. A kódszerkesztőben egy olyan függvényt kell írnod, amely lehetővé teszi a gép működtetését, és az anyagok begyűjtését vagy lerakását.

def operate_machine(color): def collect_cloth(): # Collect Code player.speak("Cloth is ready for storage") def place_thread(): # Place Code player.speak("Machine needed more materials") if color == "green": collect_cloth() if color == "red": place_thread()

A függvény neve operate_machine és egy color nevű argumentumot vár. Attól függően, hogy a gép előtt melyik színű szőnyeg található, a függvénybe argumentumként megadott "red" vagy "green" érték megváltoztatja a gép működését, lehetővé téve, hogy vagy lerakd, vagy begyűjtsd az anyagokat.

A függvény belsejében két beágyazott függvény található, collect_cloth() és place_thread(), amelyeket a nevükből is kiderülő célokra használnak. Ezekből hiányoznak a művelet végrehajtásához szükséges sorok: a collect_cloth() esetében add hozzá a player.collect("cloth") sort, amelyet a player.speak("Quilt is ready for storage") követ, míg a place_thread() esetében add hozzá a player.place("thread") sort, amelyet a player.speak("Machine needed more materials") követ.

Miután a hiányzó kódsorokat hozzáadtad a beágyazott függvényekhez, menj a ládával szemben található, világos X jelhez, és gyűjtsd össze a gép által használt "thread"-et, így: player.collect("thread").

A műhelyben sétálj a sötét X jelekhez, és használd az egyedi operate_machine függvényt, miközben a gépek felé nézel. Adj meg "red" vagy "green" értéket, attól függően, hogy melyik színű szőnyegen található az X jel, például: operate_machine("red"). Ez lehetővé teszi a fonal lerakását és a szövet begyűjtését.

Miután összegyűjtötted az összes szövetet, menj a mögötte lévő láda mellett található arany X jelhez, és használd a place() függvényt a szövet tárolására. Hozz létre egy cloths nevű változót, add hozzá a begyűjtött szövetek számát, és tedd be a ládába a szint teljesítéséhez, így: player.place(cloths).

Kódkönyv