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ň

Pokročilé funkce
Uzávěry

Cíl

Reguluj zásobování vodou na farmě nastavením a využitím closures.

K dispozici jsou čtyři nádrže určené k zavlažování okolních polí; je načase je přeuspořádat, aby bylo zajištěno, že správné množství vody je distribuováno na správná místa. Abychom tento úkol usnadnili, můžeme využít closures.

Closures jsou vnořené funkce navržené k zapouzdření dat, což snižuje množství potřebných proměnných a zároveň skrývá data uvnitř funkce, takže nemohou být externě manipulována – jinými slovy, funkce je uzavřena.

Pro regulaci vody v nádržích vytvoříme vnořenou funkci, která bude fungovat jako násobitel. Tato funkce pracuje podobně jako smyčka, kdy vnější funkce s názvem multiplier_of() má argument, který se násobí argumentem její vnitřní funkce multiplier().

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

Jakmile je vše nastaveno, musíme funkci uzavřít vytvořením closures, což zabraňuje přístupu k jejich hodnotám a zajišťuje jejich neměnnost.

# 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]

Výše uvedený closure nese název multiply_by_2() a využívá námi vytvořenou vnořenou funkci s pevně nastaveným argumentem, konkrétně 2, což je číslo, kterým se closure násobí. Výsledkem je, že jakékoli číslo, které jako argument přidáme, bude vynásobeno dvěma (2) a toto nastavení nelze změnit, protože je uzavřeno.

Pokračujme k regulaci nádrží: nastavte tři (3) closures: multiply_by_2, multiply_by_3 a multiply_by_5. Každý z nich nastavte ručně pomocí stejného formátu jako v předchozím příkladu, například: multiply_by_2 = multiplier_of(2).

V této úrovni existuje konstantní slovník s názvem tanks, který jako index obsahuje šest (6) barev: "red", "blue", "orange", "purple", "yellow" a "green". Každý index obsahuje číslo představující množství vody proudící nádrží, které se použije k regulaci nádrže pomocí výše uvedených closures.

Abychom to usnadnili, bude v editoru vytvořena funkce s názvem regulate_water(), která přijímá dva argumenty: barvu představující výše uvedené indexy a násobitel, což je closure, který má být použit. Příklad použití funkce je následující: regulate_water("red", multiply_by_2).

Vydejte se k temným X značkám nad kobercem a čelte nádržím – použijte funkci regulate_water() a jako první argument zadejte barvu koberce a jako druhý odpovídající closure. Násobitele, které se mají použít pro každý barevný koberec, jsou následující:

multiply_by_2 - "red" and "green" multiply_by_3 - "blue" and "purple" multiply_by_5 - "orange" and "yellow"

Regulujte vodu na jednotlivých stranách nádrží, abyste úroveň dokončili.

Kniha Kódu