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ň

Matematické moduly
Modul operátorů

Cíl

Ověřte a rozdělte objednávky stavebního materiálu pro nově zřízená zemědělská pole pomocí modulu operator.

Na horním patře přístavby se nachází několik kanceláří, kde jsou vedeny záznamy o inventáři a objednávkách stavebního materiálu potřebného pro nový rozvoj pozemků. K ověřování a výpočtu materiálů, které mají být použity při stavbě, lze využít celou řadu různých nástrojů – kromě modulu matematiky a statistiky můžeme použít modul operator.

Tento modul, import operator, lze využít ke zjednodušení operátorových výpočtů a k praktickému zabalení do funkcí. Tyto funkce můžete použít jak pro optimalizaci, tak pro generování hodnot, aniž by bylo nutné vytvářet objekt pro jejich ukládání.

  • operators.eq(): Přijímá dva argumenty, ověří, zda jsou argumenty navzájem shodné.
  • operators.lt(): Přijímá dva argumenty, ověří, zda je první argument menší než druhý.
  • operators.gt(): Přijímá dva argumenty, ověří, zda je první argument větší než druhý.
  • operators.floordiv(): Přijímá dva argumenty, vydělí první argument druhým a aplikuje ekvivalent funkce math.floor(), čímž výsledek zaokrouhlí dolů.
  • operators.mod(): Přijímá dva argumenty, vrací zbytek po dělení obou argumentů.
  • operators.contains(): Funkce se používá se seznamem, přijímá dva argumenty; první argument je seznam, druhý argument je hodnota, kterou chcete zkontrolovat, zda se nachází v seznamu. Vrací: true nebo false v závislosti na přítomnosti hodnoty.
  • operators.concat(): Přijímá dva seznamy jako argumenty, kombinuje je do jednoho pomocí jediné čisté funkce, může být rychlejší než jiné metody.
  • operators.countOf(): Přijímá dva argumenty, seznam a hodnotu, která se má spočítat. Vrací počet výskytů dané hodnoty v seznamu.

Pro začátek se vydejte k tmavému X, které označuje červený, modrý a zelený koberec. Existuje šest (6) konstant: red_order, blue_order, green_order, což jsou objednávky materiálů, a dále: red_req, blue_req, green_req, což jsou požadovaná množství potřebná pro stavbu.

U tmavého X na červeném koberci použijte funkci read() k ověření požadovaného množství materiálů. Vytvořte proměnnou s názvem red_verification a použijte funkci operator.eq() s konstantami red_order a red_req, například takto: red_verification = operator.eq(red_order,red_req). Pomocí předem napsané funkce write() zobrazte výsledek uložený v proměnné red_verification.

Na modrém a zeleném X opakujte stejný postup – použijte funkci read() a vytvořte proměnné: blue_verification a green_verification. Do proměnné pro modrý koberec uložte hodnotu funkce operator.lt() s konstantami blue_order a blue_req, abyste ověřili, zda objednávka je menší, než co je požadováno. Do proměnné pro zelený koberec uložte hodnotu funkce operator.gt() s konstantami green_order a green_req, abyste ověřili, zda objednávka je větší, než kolik materiálu je potřeba. Použijte předem napsané funkce write() s odpovídajícími ověřovacími proměnnými pro jednotlivé barevné koberce.

Dále se vydejte ke světlému X a na stole použijte funkci read() k ověření objednávek, které již byly zadány a jsou na cestě. V objednávkové knize naleznete hodnoty dvou proměnných konstant: main_order a sub_order, a také informaci o počtu oddílů, do kterých je třeba materiály rozdělit. Po přečtení objednávkové knihy vytvořte proměnnou s názvem allocations a uložte do ní hodnotu funkce operator.floordiv(), která vydělí hodnotu main_order počtem oddílů uvedených v knize, například takto: allocations = operator.floordiv(main_order, -add sections-). Tím se objednávka rozdělí a výsledek se zaokrouhlí dolů. Pomocí předem napsané funkce write() zobrazte výsledek uložený v proměnné allocations.

Vydejte se ke zlatému X a vytvořte proměnnou s názvem remainder. Uložte do ní výsledek funkce operator.mod(), která sečte konstanty main_order a sub_order a vrátí zbytek po dělení těchto dvou objednávek. Na stole pak pomocí předem napsané funkce write() zobrazte výsledek uložený v proměnné remainder.

Vydejte se k tmavému X na fialovém koberci, kde budeme ověřovat, zda byla doručena nářadí potřebná pro stavbu. Máme dvě konstanty seznamů, delivery_1 a delivery_2, a budeme kontrolovat, zda bylo nářadí doručeno v první dodávce. Vytvořte proměnnou s názvem tools a uložte do ní výsledek funkce operator.contains(), přičemž jako první argument uveďte seznam delivery_1 a jako druhý argument řetězec “tools”. Tím se ověří, zda je nářadí obsaženo v dodávce, například takto: tools = operator.contains(delivery_1,"tools"). Jakmile to bude hotové, na stole pomocí předem napsané funkce write() zobrazte výsledek uložený v proměnné tools, který ukáže, zda byla nářadí úspěšně doručena.

Další úkol je zkontrolovat všechny dodávky. Vydejte se k tmavému X na bílém koberci a vytvořte seznam s názvem materials. Uložte do něj hodnotu funkce operator.concat(), přičemž jako argumenty použijte seznamy delivery_1 a delivery_2. Tím se oba seznamy rychle sloučí do jednoho. Na stole pak pomocí předem napsané funkce write() zobrazte výsledek uložený v proměnné materials, který zaznamená všechny materiály, jež již byly doručeny pro stavbu.

Nakonec se vydejte k tmavému X na oranžovém koberci, kde jsou uvedeny předpoklady pro zahájení stavby, přičemž jedním z hlavních údajů je, kolik dřeva (v tunách) je potřeba na začátku. Zkontrolujte, kolik dřeva bylo doručeno v rámci celé dodávky, a ohlaste to pomocí funkce speak() ve spojení s funkcí operator.countOf(). Jako první argument předejte vytvořený seznam materials, následovaný řetězcem “wood”. Tím se zjistí, kolikrát se dřevo v seznamu materials vyskytuje. Toto ukazuje, jak lze operátorové funkce používat samostatně, aniž by bylo nutné vytvářet objekt pro jejich ukládání, například takto: player.speak(operator.countOf(materials,"wood")). Tímto úkolem dokončíte úroveň.

Kniha Kódu