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

Generátorok
A generátor kézi léptetése

Célkitűzés

Használj generátort kézi sorrendben az alapanyagok összerakásához és a kenyér előállításához.

Előre egy olyan létesítmény található, ahol a sajtókat használva összeállíthatod a kenyér tésztáját. Normál esetben a combine() függvényt használnád az anyagok összerakásához, de itt ez nem így van, az anyagokat előbb finomítani kell, mielőtt összeállíthatnád őket.

Ehhez a feladathoz generátorokat használhatunk, mivel testre szabhatók, hogy különböző fájltípusokat adjanak vissza, valamint a sorrendjük parancsra legyen meghívva, ahelyett, hogy a függvények és ciklusok automatikusan adnák ki őket. Íme egy példa:

def bread(): yield 5 yield "grain"

A fenti kód egy generátort tartalmaz két yield utasítással, melyek közül az egyik egy valós számot, a másik pedig egy karakterláncot ad eredményül. A next() függvény használatával tetszőlegesen előállíthatjuk a generátor értékeit. Így:

recipe = bread() # Generátor beállítása player.place(next(recipe)) # Az első érték meghívása player.collect(next(recipe)) # A második érték meghívása

A fenti példában a generátor beállításra kerül, és a next() függvény segítségével hívjuk meg az első yield értéket a place() függvényben való felhasználáshoz. Ezt a műveletet megismételjük a második értéknél, de azt a collect() függvény használja. Ez megkönnyíti különböző típusú értékek sorozatos hívását anélkül, hogy több listát vagy változót kellene használnunk.

A kódszerkesztőben definiálva lesz egy bread() nevű generátor, de készlet számlálókat vár minden összetevőhöz, hogy elő tudjad készíteni a kenyér tésztáját. Ezeket a számokat a létesítmény melletti táblán találod. A generátor használatba vételéhez hivatkozz rá így: recipe = bread()

Először menj a könnyű, világos X jelhez a tejtartály mellett, és a generátor next() függvényével collect() segítségével vedd össze a tartály utolsó tejét, így: player.collect(next(recipe)). Ezután menj az arany X jelhez a tábla mellett, és használd a speak() függvényt, hogy megszerezd a kenyér legyártásához szükséges mennyiségszámokat, majd írd be őket a generátorba. Az adatokat a "sign" nevű állandó tárolja, és így kell hívni: player.speak(sign).

Miután az összes értéket beírtad a generátorba, lépj be a létesítménybe, és a sötét X jelek esetén használd a player.place(next(recipe)) függvényt, a világos X jelek esetén pedig a player.collect(next(recipe)) függvényt a szint teljesítéséhez.

Kódkönyv