Warning
This page is located in archive.

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

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: Vězňovo dilema.

další čtení pro vaši inspiraci

Úkoly pro cvičení

For cykly

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.

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.

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 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ř. Python 3 tutoriálem, nebo jiným podobným zdrojem veškeré moudrosti ;-)

Interaktivní cvičení

Na codecademy pokračujte v 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í!

courses/b4b33rph/cviceni/program_po_tydnech/tyden_02.txt · Last modified: 2018/10/15 11:19 by xposik