====== Dilema I ====== * diskuse problémů * procvičování ''for'' cyklů * přetížení operátorů, třída ComplexNumber * procvičování základních datových typů ====== Hádanka ======= > {{page>courses:b4b33rph:internal:puzzles#cviceni_2}} ====== Typické dvouhráčové hry ====== Na přednášce byl prezentován problém vězňova dilematu. Přečtěte si pozorně zadání úlohy: [[..:veznovo_dilema:start| Vězňovo dilema]]. další čtení pro vaši inspiraci * [[http://en.wikipedia.org/wiki/Rock,_Paper,_Scissors|Rock paper scissors]] * [[http://en.wikipedia.org/wiki/Chicken_(game)|Game of chicken]] * [[http://en.wikipedia.org/wiki/Matching_pennies|Matching pennies]] * [[http://en.wikipedia.org/wiki/Coordination_game|Coordination game]] * [[http://en.wikipedia.org/wiki/Ultimatum_game|Ultimatum game]] * [[http://en.wikipedia.org/wiki/Pirate_game|Pirate game]] ====== Úkoly pro cvičení ====== ===== For cykly ===== > {{page>courses:b4b33rph:internal:cviceni:python#cykly&noheader}} ''for'' přes indexy seznamu, po elementech, zjištění délky seznamu, prázdný seznam. Implementujte jednoduchou funkci ''find_max'' def find_max(in_list): """ find maximum value in a list or tuple :param in_list: a list or tuple of elements that allow < comparison :return: a tuple max_value, index of the max_value within the list """ ===== Základní datové typy ===== základní datové typy: čísla, znaky, True, False, řetězce, platnost jednotlivých proměnných. Vylepšete funkci ''find_max'' tak, aby v případě, že vstupní seznam je prázdný vrátila hodnotu ''None''. Vhodně otestujte. > {{page>courses:b4b33rph:internal:cviceni:python#boolean&noheader}} ===== přetížení operátorů ===== Implementujte jednoduchou třídu ''ComplexNumber'', která si poradí s if __name__ == "__main__": a = ComplexNumber(1,2) b = ComplexNumber(10,10) size_of_a = a.size() # size of the complex number c = a+b # c must be also a ComplexNumber object, use __add__ print(c.re,c.im) # just a simple check that the addition works print(c) # implement simple __str__ method Neděste se, vyučující vám na cvičení ukáží jak na to. > {{page>courses:b4b33rph:internal:cviceni:python#complex_number&noheader&firstseconly}} ====== Domácí úkol, příprava na příště ====== ===== DÚ na příští týden - modul pro výpočet skalárního součinu 2 vektorů ===== * vytvořte modul ''vectors.py'' * v něm bude definice třídy MyVector * konstruktor bude akceptovat (navíc k ''self'') jeden parametr, kterým bude jednodimenzionální pole. * metoda ''get_vector(self)'' navrátí jednodimenzionální pole obsahující prvky vektoru. * pomocí speciální metody ''__mul__(self,other)'' implementujte [[http://cs.wikipedia.org/wiki/Skalární_součin|skalární součin]] dvou objektů typu ''MyVector''. Výstupem je tedy skalár (jedno číslo). * soubor ''vectors.py'' nesmí importovat jiné moduly * soubor nahrajte do upload systému do požadovaného termínu * Upload systém vám kód ihned ohodnotí, případně několik sekund počkejte. * Za správně vyřešenou úlohu získáte až 2 body. Nazapomeňte na vlastní kontrolu kódu, nespoléhejte pouze na kontrolu UploadSystému. Třeba něco jako: if __name__ == "__main__": vec1 = MyVector([1,2,3]) # vektory mohou byt i jine dimenze nez 3! vec2 = MyVector([3,4,5]) print(vec1.get_vector()) # priklad ziskani seznamu dot_product = vec1*vec2 # vypocet, pretizeny operator *, vola se __mul__ print(dot_product) # jen kontrolni vytisk ===== Čtení ===== Přečtěte zbytek vašeho vybraného Python tutorial. V případě doporučeného jsou to kapitoly 3-9. Nemusíte úplně rozumět všemu, ani si pamatovat vše zpaměti. Měli byste mít natrénován postup jak si dohledat potřebné informace, mít natrénovanu práci s např. [[http://docs.python.org/py3k/tutorial/index.html|Python 3 tutoriálem]], nebo jiným podobným zdrojem veškeré moudrosti ;-) ===== Interaktivní cvičení ===== Na //codecademy// pokračujte v [[http://www.codecademy.com/en/tracks/python|interaktivním kurzu]]. Předpokládáme, že otázky, které jste měli po části kurzu z minulého týdne, jste položili na fóru nebo právě dnes na cvičení a že tudíž můžete pokračovat dál sekcemi: * Functions * Taking a vacation * Python lists and dictionaries * A day at the supermarket * Student becomes the teacher * Lists and functions * Loops Opět se pokuste dostat co nejdál. Stále platí, že tato cvičení vám mají především pomoci **identifikovat věci, kterým nerozumíte**. **Pokládejte otázky na fóru nebo na cvičení!**