{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[{"file_id":"1MyW9fXutlQfJYCFnsdMimHMRJyB-F4ht","timestamp":1662214305477}],"collapsed_sections":[],"toc_visible":true,"authorship_tag":"ABX9TyP/5tHHll2POiVKOPn3ZWAt"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# Jak pracovat se cvičeními\n","Cvičení se skládá z bloků kódu a žádaného výstupu vždy na konci zadání cvičení.\n","Po spuštění bloku kódu vždy vidíte výstup. Porovnejte si jej s žádaným výstupem. Pokud se výstup shoduje, máte splněno. Pokud ne, zkuste to znovu, a pokud si nevíte rady, tak se zeptejte a spolu to zvádneme.\n","\n","Veškerá cvičení budu po uplynutí času dělat před všemi a finální verzi mého sešitu vám poté poskytnu jako studijní materiál.\n","\n","---"],"metadata":{"id":"oTLi1baCT1mC"}},{"cell_type":"markdown","source":["# Cvičení 1 – Inicializace proměnných\n","\n","Založte proměnné s uvedenými typy.\n","- Proměnnou greeting, která bude obsahovat řetězec – Hello, world.\n","- Proměnnou whole number, která bude obsahovat lobovolné celé číslo.\n","- Konstantu PI s hodnotou PI na dvě desetinná čísla.\n","- Proměnnou is awesome a uložte do ní hodnotu `pravda`, protože jsme všichni skvělí!\n","\n","---\n","\n","Požadovaný výstup:\n","\n","\n","```\n","\n","\n","\n","\n","```\n","\n"],"metadata":{"id":"lw1d2QJHTy1e"}},{"cell_type":"markdown","source":["## Svoje řešení vyplňte níže:"],"metadata":{"id":"7hg4R0xcXCIn"}},{"cell_type":"code","source":["# Zde incializuj proměnné ze zadání\n","\n","\n","# do mezery doplň jednotlivé názvy proměnných (jeden řádek – jedna proměnná)\n","print(type( ))\n","print(type( ))\n","print(type( ))\n","print(type( ))"],"metadata":{"id":"BgtbF98FTygn"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Cvičení 2 – vstup od uživatele a jeho zpracování\n","\n","Doplňte program tak, aby získal vstup od uživatele a vypsal, zda se jedná o řetězec, nebo číslo.\n","\n","Protože jsme podmínky ještě nedělali, část programu máme připravenou a je potřeba doplnit kód, který získá vstup od uživatele (s adekvátní hláškou, co po uživateli chcete), a následně výstup z programu pomocí `print()`.\n","\n","Výstup programu nechám čistě na vás."],"metadata":{"id":"m4QIW541xFZL"}},{"cell_type":"markdown","source":["## Svoje řešení vyplňte níže:"],"metadata":{"id":"qTM6YBZGxE8s"}},{"cell_type":"code","source":["# Pomocná funkce, která vrátí True, pokud je to číslo, False pokud ne.\n","def check_is_digit(input):\n"," return input.isdigit()\n","##############################\n","# Poté, co doplníte vypisování hlášek, smažte klíčová slova \"pass\".\n","\n","# Získáme vstup od uživatele a uložíme ho do proměnné.\n","\n","# Podmínka, která ověří, zda vstup od uživatele může být číslo\n","if check_is_digit(___): # Místo podtržítek doplňte jméno proměnné, kde je uložen vstup od uživatele.\n"," # Hláška, co se vypíše, když je to číslo.\n","else:\n"," # Hláška, když je to cokoliv jiného.\n","\n"," "],"metadata":{"id":"AkGczpLfxGEi"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Cvičení 3 – Cyklus a podmínky – FizzBuzz\n","\n","Napište program, který projde pole čísel od 1 do 100. Při každém průchodu zkontrolujte, jestli je číslo dělitelné 3, 5 nebo oboje, a podle následujích pravidel upravte výpis:\n","\n","- Je dělitelné 3 – vypište \"Fizz\".\n","- Je dělitelné 5 – vypište \"Buzz\".\n","- Pokud je číslo dělitelné 3 a 5 – vypište \"FizzBuzz\".\n","- Jinak vypište číslo.\n","\n","Pozor na specifitu podmínek!\n","\n","Co se bude v tomto cvičení hodit:\n","- `range()`\n","- `if...elif...else`\n","- `print()`\n","\n","----\n","Požadovaný výstup není uveden z důvodu jeho délky (100 řádků)."],"metadata":{"id":"9E8pmTwXH4Sm"}},{"cell_type":"markdown","source":["##Svoje řešení vyplňte níže:"],"metadata":{"id":"SJd4YMF6I5OG"}},{"cell_type":"code","source":[],"metadata":{"id":"E8yxzVH5I5ph"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Cvičení 4 – Zanořené cykly – Šachovnice\n","\n","Pro toto cvičení si musíte vytvořit dvě proměnné, ve kterých budete mít čísla od 1 do 8 a písmena od `a` do `h`. Následně do sebe zanoříte dva `for` cykly tak, aby logicky tvořily kombinace na šachovnici – `1a` až `8h`. Celkový počet kombinací je 64.\n","\n","K výpisu vám poslouží `print`, kdy v jednom případě musíte upravit parametr funkce print `end` tak, aby při každém výpisu nezalomoval řádky.\n","\n","Co se bude v tomto cvičení hodit:\n","- `range()`\n","- `for` cyklus\n","- `print()` a parametr `end`\n","- formátované stringy\n","\n","-----\n","Požadovaný výstup:\n","\n","```\n","1a 1b 1c 1d 1e 1f 1g 1h \n","2a 2b 2c 2d 2e 2f 2g 2h \n","3a 3b 3c 3d 3e 3f 3g 3h \n","4a 4b 4c 4d 4e 4f 4g 4h \n","5a 5b 5c 5d 5e 5f 5g 5h \n","6a 6b 6c 6d 6e 6f 6g 6h \n","7a 7b 7c 7d 7e 7f 7g 7h \n","8a 8b 8c 8d 8e 8f 8g 8h \n","```"],"metadata":{"id":"VAqyg8RxE6YQ"}},{"cell_type":"markdown","source":["##Svoje řešení vyplňte níže:"],"metadata":{"id":"WWHa9-d6IyxH"}},{"cell_type":"code","source":["# Vytvořte si dvě proměnné, do jedné si uložte čísla od 1 do 8 a do druhé písmena od \"a\" do \"h\"\n","\n","# Patřičně do sebe zanořte dva cykly tak, aby se vám pomocí příkazu print() podařila vypsat šachovnice\n"],"metadata":{"id":"xIiZu1o_Ed-M"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Ultimátní **NEPOVINNÉ** cvičení – textová hra Hangman\n","\n","V tomto cvičení si procvičíte snad všechno, co jsme si na kurzu ukázali. Znáte hru \"Šibenice\"? Tak přesně to si naprogramujeme.\n","\n","Nadefinujte si pole slov, ze kterého budete náhodně vybírat jedno slovo, které se bude uživatel snažit uhodnout. \n","\n","Poté uživatele uvítejte a zeptejte se ho na písmeno. Na písmena se ptáme pořád dokola, dokud uživatel slovo neuhádne, nebo mu nedojdou životy.\n","\n","Počet životů nechám na vás.\n","\n","Pro zjednodušení používejte v seznamu pouze malá písmena a všechny inputy převeďte na malá písmena. Stejně tak pro zjednodušení hádáme po jednom písmenu.\n","\n","Klidně si prvně rozkreslete na papír, jak by měl program pracovat krok po kroku. Co by se mělo stát, když uživatel zadá písmeno? A co pak? Musím v každé iteraci hlídat nějaké hodnoty?\n","\n","Nápověda (vychází z mého řešení, které najdete ve složce hangman):\n","- Budete potřebovat alespoň 6 proměnných.\n","- Využijete jak `while`, tak `for` cyklus.\n","- V programu bude několik podmínek a některé budou vnořené.\n","- Print je váš kamarád, formátované stringy, parametr `end` také.\n","- Využijete jak `list`, tak `set`.\n","- Funkci na výběr náhodného čísla."],"metadata":{"id":"clXKqEq4KQ9R"}},{"cell_type":"markdown","source":["##Svoje řešení vyplňte níže:"],"metadata":{"id":"1NSFPvJbXWSo"}},{"cell_type":"code","source":[],"metadata":{"id":"HfUvX0wtXakh"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Cvičení 5 – Kalkulačka\n","\n","Napište program, který vezme od uživatele tři vstupy, dvě čísla a operaci, která se má nad nimi provést.\n","\n","Zpracujte kalkulačku tak, aby vždy počítala s desetinnými čísly. Podporované operace:\n","- sčítání\n","- odčítání\n","- násobení\n","- dělení\n","- umocnění\n","\n","Co se bude v tomto cvičení hodit:\n","- `if-elif-else`\n","- `input()`\n","- typové převádění\n","- formátované stringy\n"],"metadata":{"id":"n0VqU4EA7Zmn"}},{"cell_type":"markdown","source":["##Svoje řešení vyplňte níže:"],"metadata":{"id":"JkL67hk97Zmz"}},{"cell_type":"code","source":["# Tipy\n","# - Dělit nulou nelze\n","# - Hodnota zadaná uživatelem je vždy typu string"],"metadata":{"id":"AY5gvf6W7Zmz"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Sekce úkolů k Pandas a NumPy"],"metadata":{"id":"mB300E32ynon"}},{"cell_type":"markdown","source":["# Cvičení 6 - NumPy pole a matematické operace nad nimi.\n","\n","Vytvořte si dvě pole (z knihovny NumPy). Naplňte každé pole 6 v náhodnými čísly rozmezí 1 až 100. Následně proveďte všechny matematické operace, které můžeme s poli dělat. \n","Výsledky vypište srozumitelně, aby bylo jasné, která operace se nad poli provedla.\n","\n","Dbejte na to, aby pole vytvořené zapomoci knihovny NumPy mělo určený takový typ `int`.\n","\n","Co se bude hodit:\n","- Vlastní funkce, která vytvoří pole naplní ho náhodnými čísly.\n","- knihovna `NumPy`\n","- Formátovaný string ve výpisu\n","- Cyklus a `range()`"],"metadata":{"id":"AsmMIusByuvr"}},{"cell_type":"markdown","source":["## Svoje řešení vyplňte níže:"],"metadata":{"id":"16OvpuGH0prc"}},{"cell_type":"code","source":["# Nezapomeňte naimportovat knihovny NumPy\n","\n","# Nadefinujte vlastni fukci, ktera vrátí pole s 6 nahodnými čísly\n","# Funkce nemá vstupní parametr\n","# Funkce vrací vytvořený ARRAY z knihovny NumPy s náhodnými čísly uvnitř.\n","\n","# Nezapomeňte na výpis jednotlivých operací nad poli.\n"],"metadata":{"id":"ko6hS55h0uHK"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Cvičení 7 - Výpočet obsahu základních geometrických útvarů\n","\n","Vytvořte si program, který na základě vstupů od uživatele vypočítá obsah vybraného geometrického útvaru.\n","\n","V jednotlivých vstupech dostatečně informujte uživatele, co od něj chcete. Ošetřete, zda jsou zadána opravdu čísla. Výstupem programu by měl být výpis výsledku výpočtu ve formátovaném řetězci, kde bude uveden název geometrického útvaru, zadané hodnota nebo hodnoty a výsledek.\n","\n","Dbejte na to, aby pole vytvořené zapomoci knihovny NumPy mělo určený takový typ `int`.\n","\n","Co se bude hodit:\n","- `input` na čtení vstupu od uživatele\n","- formátovaný string\n","- knihovna NumPy má definovanou konstantu pro číslo Pi\n","- podmínky\n","- input vrací vždy string, je potřeba si z něj vytvořit číslo\n","- Google :-)"],"metadata":{"id":"bApDJI7Aq0kX"}},{"cell_type":"markdown","source":["## Svoje řešení vyplňte níže:"],"metadata":{"id":"f-3sSpkoq0kX"}},{"cell_type":"code","source":["# Nezapomeňte naimportovat knihovny NumPy, potřebujete hodnotu Pi\n","\n","# Základní menu pro inspiraci, neměňte\n","print(\"Vítej uživateli, co pro tebe mám vypočítat?\")\n","print(\"1 -> obsah čtverce\")\n","print(\"2 -> obsah obdelníku\")\n","print(\"3 -> obsah kruhu\")\n","input(\"Zadej, co chceš vypočítat: \")\n","\n","# Zde pokračujte v programu\n"],"metadata":{"id":"7fVufmGhq0kY"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Cvičení 8 - Načtení dat z CSV souboru a práce s nimi.\n","\n","Vložte si soubor `us_pop.csv` do záložky souborů, načtěte si data z CSV do DataFrame a vyřešte následnující úholy.\n","\n","- Vypište prvních 20 záznamů\n","- Vypiště 5 posledních záznamů\n","- Vyfiltrujte (odstraňte) města, která měla v roce 2013 méně než 150000 obyvatel a vypište celkový počet záznamů v DataFrame\n","- Seřaďte data podle roku 2015 od největšího města po nejmenší a vypište 10 největších měst v Americe.\n","- Zjistěte medián počtu obyvatel pro jednotlivé roky\n","\n","Co se bude hodit:\n","- knihovnu Pandas\n","- NumPy statistické metody\n","- Předávání funkce jako parametr (bez kulatých závorek)\n","- filtrování pomoci metody `query(\"podmínka\")`\n","- `DataFrame`\n","- Metody, které se dají nad `DataFrame` zavolat"],"metadata":{"id":"5yLSdMDF9AS2"}},{"cell_type":"markdown","source":["## Svoje řešení vyplňte níže:"],"metadata":{"id":"uK0NdOFu9AS2"}},{"cell_type":"code","source":[],"metadata":{"id":"KaRSw2c-9AS3"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Cvičení 9 - Vizualizace růstu populace pro 20 největších měst\n","\n","Vypočítejte procentuální změnu populace mezi lety 2010 a 2015. Základní hodnota bude rok 2010. Toto vypočítejte pro 20 největší měst.\n","\n","Seřaďte města podle růstu od největšího po nejmenší a vypište jako tabulku.(metody pro výpis dat z `DataFrame`)\n","\n","Výsledky prezentujte také jako sloupcový graf. Graf pojmenujte.\n","\n","-----\n","\n","### Výpočet procentuálního růstu:\n","\n","`((současná hodnota / základní hodnota) * 100) - 100`\n","\n","### Bude se hodit\n","\n","- `DataFrame` a `iloc[od:do]`\n","- nechat si jen sloupce, které potřebujete (GEOGRAPHY, YEAR_2010, YEAR_2015)\n","- metoda `assign` na vytvoření nového sloupce\n","- lambda funkce\n","- řezení nad `DataFrame`\n","- dokumentace k Pandas\n","\n","Tahák - aby se vám místo hodnoty indexu zobrazovali na ose X názvy měst, je možné využít metodu `set_index(nazev_sloupce)` nad daty.\n","\n","Můžete vykreslit graf pouze pro jeden sloupec z celého `DataFrame`.\n","\n","`df.nazev_sloupce.plot.bar()`"],"metadata":{"id":"WbNsLFCTpDMo"}},{"cell_type":"markdown","source":["## Svoje řešení vyplňte níže:"],"metadata":{"id":"E2-ks3FIfT7V"}},{"cell_type":"code","source":[],"metadata":{"id":"djnxLH8afT7g"},"execution_count":null,"outputs":[]}]}