====== 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:a4b99rph: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:a4b99rph: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:a4b99rph: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 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 úterní půlnoci (01_DU, 2017-10-17, 23:59)
* 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|Pyhon 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í!**