Naleznete zde infromace pro jednotlivé cvičení z předmětu SPJA. Veškeré další informace naleznete zde.
Úvodní znělka
Sound of CylonsStudijní opora a materiály
K dispozici je studijní text.
Zajímavý online interaktivní kurz nalezneta na Codeacademy.
Pro základy programování můžete využít knihu Think Python, kterou si můžete stáhnout zdarma.
Velice pěkný tutoriál k Pythonu se jmenuje Dive into Python, který se dá použít i pro rychlé vyhledávání programovacích technik v Pythonu.
Přečtěte si také výukový text z MIT, který vřele doporučuji.
Jako doplňkovou literaturu můžete použít oficiální Python Tutoriál.
Sada přednášek z MIT, které vysvětlují použití Pythonu na různých úlohách.
Část našich cvičení se zabývá vývojem webových aplikací pomocí Django frameworku. Existují i české stránky, kde naleznete dokumentaci k verzi 1.0 v češtině.
Pro zájemce o další informace z oblasti použití Django, doporučuji knihu The Django Book.
Výuka
Úkoly na cvičení jsou pro Python 3.
Cvičení 1
Nebodované cvičení.
Co je to dynamické a silné typování?
Vytváříme funkce, proměnné (string, int, float), seznamy (list, tuple), slovníky.
Jak na komentáře, podmínky a cykly
Základy interpretru IPython (%run, %rerun, %hist, In, Out a další).
Společně si doprogramujeme: cv1_labs.py.
Cvičení 2
Bodované cvíčení na témata probraná na 1. přednášce + obsah 1. cvičení, kde se používalo jednoduché volání funkcí. Jednotlivé úkoly:
-
[1 b] U všech níže uvedených funkcí provádějte typovou kontrolu, v případě, že na vstupu (parametr) nebude správný typ, tak vypsat chybovou hlášku, nebo vrátit hodnotu False.
Nápověda: využijte funkcetype()
a operátoryand
aor
. -
[1 b] Vytvořte funkci
spherical_sector
pro výpočet objemu kulové úseče dle vstupních parametrů. Vzorec:
Nápověda: c++ funkceexp(x,2)
se v pythonu provede taktox**2
. -
[2 b] Vytvořte funkci
sqr
, která bude přijímat dva parametry. První bude číslo, nebo kolekce čísel (naimplementovat oboje) a druhý parametr bude číslo. Tato funkce vrátí kolekci (list nebo tuple) prvního parametru, který bude umocněný na mocnitel zadaný druhým parametrem.
Nápověda: využijte metodyappend()
nebo list comprehension. -
[1 b] Vytvořte funkci
shuffle
, která bude přijímat dva parametry. Oba budou přijímat řetězce (string). Výstupem funkce bude kolekce nebo řetězec obsahující střídavě prvky obou vstupních řetězců. Například:shuffle("Hello", "World")
bude mít výstup: HWeolrllod
Cvičení 3
Bodované cvíčení na témata probraná na 2. přednášce: Funkce, list comprehension, funkcionální prvky programování, čtení ze souboru. Studijním materiálem je text uvedený v úvodu stránky. Výjimky a čtení ze souboru je vysvětleno v prezentaci.
-
[1 b] Napište funkci
my_avg
, která vrátí aritmetický průměr všech zadaných parametrů. Parametry budou čísla a jejich počet je proměnlivý. V implementaci nepoužívejte vestavěné matematické funkce. Je nutné ověření vstupů zda jsou skutečně všechny hodnoty čísla.
Hint: Vytváření funkcí -
[1 b] Vytvořte funkci
divide
, která bude přijímat 2 argumenty. První je číslo, druhým pak list. Pomocí funkcemap
vraťte list, který bude obsahovat původní prvky listu vydělené celočíselně prvním argumentem funkce.
Hint: mrkněte na rozdíl mezi / a //. -
[1 b] Vytvořte funkci
my_map
, která bude stejně jako funkcemap
přijímat dva parametry. Prvním parametrem je funkce, druhým pak list. Výstup bude stejný jako u funkce map. Při implementaci použijte list comprehension [:list komprihenšn:] (generátorovou notací seznamů). Zde stačí naimplementovat použití pouze jednoparametrové funkce jako arumentu pro mapování
Hint: kdyžs = sum
, pak lze provésts([1, 2, 10, 5])
. -
[2 b] Soubor calls.txt obsahuje seznam hovorů uskutečněných z firemních telefonů. Formát souboru je následující:
tel_č_volaného,tel_č_volajícího,cena_hovoru
Napište funkci nebo funkce, které budou umět provést následjící operace:- Ze souboru calls.txt načtěte všechny hovory.
- Vypište pro každě číslo volajícího cenu hovorů z daného čísla na firemní čísla a cenu hovorů na ostatní čísla.
split
z instance stringu.
Cvičení 4
OOP v Pythonu. Úkoly budou na vytvoření třídy Učebna, která bude mít instance třídy Student. Zde naleznete zadání a předlohu.
Hint: kontrola zda je objekt instanci dané třídy slouží funkce: isinstance(instance, třída)
. K odstranění prvku ve slovníku slouží buď metoda pop(klíč)
, která i zároveň vrací odstraňovaný prvek, nebo lze využit: del slovnik[klíč]
Jako zajímavost se určitě hodí nastudovat speciální metody třídy.
Cvičení 5
OOP v Pythonu. Rozpohybování atomů. zadání a předloha.
Cvičení 6
OOP (dědění) v Pythonu. Rozpohybování atomů s gravitací. zadání a předloha.
Cvičení 7
Bodované cvičení na témá RSS. Klientský skript přijíma XML ze serveru a je potřeba doprogramovat rozparzování XML. Šablona cvičeni: cv7.zip Případné informace můžete čerpat na docs.python.org.
Cvičení 8
Bodované cvičení na témá XML-RPC. Doprogramujte server, tak aby komunikoval s klientem. Jednotlivé kroky jsou uvedeny v šabloně.
Cvičení 9
Bodované cvičení na témá XML-RPC a PyGame. Doprogramujte klienta, tak aby komunikoval se serverem a následně probíhala multiplayerová hra. Pro toto cvičení je potřeba PyGame, který lze na linux (pokud již není nainstalován) nainstalovat pomocí příkazu (nefunguje na školních PC):
sudo apt-get install python3-pip
sudo pip3 install pygame
nebo je možné vytvořit virtuální prostředí (tento postup je potřeba na školních PC) a až následně nainstalovat PyGame pomocí Pip:
python3 -m venv spja
. spja/bin/activate
pip3 install pygame
Cvičení 10
Nebodované cvičení: Django - základy a témata pro vypracování úkolu.
Připravte si prosím témata pro vypracování úkolu.
Taháček (kodování UTF8).
Cvičení 11
Django #2 - základy.