Coding for KidsCoding for Kids
Kreativní ÚrovněVýzvyPrůvodce pro Učitele
Hlasovat pro funkce
Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň

Generátory
Vytváření generátoru

Někdy můžete chtít generovat hodnoty konzistentně spíše než jednorázově. Podobně jako funkce, i generátory jsou napsány a prováděny stejným způsobem, kromě toho, že při produkci výstupu používají yield() místo return().

V tomto cvičení musíte naplnit lahve mlékem z nádrží ve stáji. Použijte generátor k iteraci plnění lahví a zajištění, že jakýkoliv přebytek mléka je shromážděn z nádrží.

Guide

Cíl

Naplnit lahve mlékem čerpáním mléka z nádrží pomocí generátorů.

Stroje, které skladují kravské mléko, jsou téměř plné, musíte mléko naplnit do lahví a uskladnit, než se zkazí. To může být trochu složitý úkol běžnými způsoby a množství mléka, které můžete vytáhnout, se může mírně lišit. Naštěstí můžete použít generátory, aby byl tento proces plynulý a přímý.

Existují dvě (2) nádrže s mlékem, které je třeba přečerpat a naplnit do lahví. Každý stroj má přihrádky, které uchovávají mléko, ty jsou reprezentovány seznamovými konstantami pojmenovanými: tank_a a tank_b . Kromě toho má každá nádrž tendenci mít přebytek, který můžete shromáždit.

Generátory následují stejnou syntaxi jako funkce, ale místo return použijí pro svůj výstup yield. Nastavte generátor pojmenovaný fill() a nastavte ho s argumentem list, to by bylo místo, kam vložíte výše zmíněné konstanty.

def fill(list): for x in range(3): yield list[x] yield 5

Generátor čte data z tří (3) polí ve seznamových konstantách, které představují přihrádky ve stroji, a přidává přebytek na konci, který činí pět (5).

Sbírejte objekt koše v poli, abyste získali přístup k potřebným lahvím pro plnění, a přejděte k oběma znakům X pro sběr mléka pomocí cyklu for.

Díky příkazu yield mohou být hodnoty vyprodukované z generátoru čteny přímo z cyklu for. Nastavte jeden, který používá funkci collect() k získání "mléka" ze stroje. Následujte to použitím speak() k ověření, kolik mléka každá láhev obsahuje. Například:

for bottles in fill(tank_a): player.collect("milk") player.speak("%d pints of milk collected" % (bottles))

Napište a použijte tento cyklus for na obou znacích X, na světlém znaku X použijte argument tank_a a na tmavém znaku X použijte argument tank_b, abyste dokončili úroveň.

Kniha Kódu