Cvičení 2019
- 4.11.2019 Rekurze
-
- Faktoriál (rekurzivní i nerekurzivní)
- Permutace (zpřeházení písmenek ve slově)
- Problém kufru (matfyzák jede na dovolenou, je mu jedno co si vezme, hlavně aby to vyšlo přesně na 20 kg)
-
11.11.2019 Rekurze, předávání parametrů do proměnných
-
primitivní typy, předávané kopií (int, str, bool)
- změny uvnitř funkce neovlivní proměnnou vně funkce
-
referenční typy, předávané odkazem (list, dict)
- přesněji předána je kopie adresy listu (a list listů obsahuje zase adresy těch vnořených listů...)
- změny obsahu listu (a[0] = 10) mění i originál (adresa vede na stejný list)
- změna celého listu (a = [10, 20, 30]) mění adresu (obsah proměnné se přepíše adresou nového listu), originál zůstává nezměněn
-
kopírování
- žádné (kopíruje se jen adresa)
- mělké (shallow, b = a.copy() nebo b = a[:]), kopíruje jen první úroveň listu (list v listu je adresa, zkopíruje se jen adresa)
- hluboké (deep, import copy; b = copy.deepcopy(a)), zkopíruje se všechno do hloubky
-
rozbor domácích úloh
- u placení mincí je možné buď předávaný list pokaždé zkopírovat, anebo ho změnit před zanořením a změnit zpátky po vynoření (backtracking), neboť jde o jednoduchou úlohu
- u skákání jezdcem je kopírování příliš neefektivní (jde o složitější úlohu), je třeba držet si list jen jeden, před zanořením ho změnit (poznačit si, kam na šachovnici dělám další krok), a po vynoření ho změnit zpátky (provedený krok zase zrušit)
- kontrola, zda jsem prošel celou šachovnici (jednoduchá: vždy zkontroluju všechny pozice; lepší: kontroluju všechny pozice jen když už nemám kam jít; ještě lepší: počítám si počet učiněných kroků, znám celkový počet kroků potřebný na projití právě celé šachovnice)
-
primitivní typy, předávané kopií (int, str, bool)
-
18.11.2019
- cvičení: počítání BMI
- práce se soubory (vstup a výstup): kód
- dict: kód
-
25.11.2019
- třídy a objekty, metody, dědičnost
- lineární spojový seznam
- úloha: tichá počta lidí, kteří různě komolí to co mají poslat dál
-
2.12.2019
- statické položky, classmethod
- spojáky
- kód
- 9.12.2019
-
16.12.2019
- tuple
- set
-
tkinter
- English tutorial
- český tutoriál
- import, Tk(), mainloop, Label, text, pack, Button, command, configure, grid
- kódy: prvni karticky grid pexeso
Nápady na cvičení
- nápady na někdy
-
- hello world
- vypsat násobky
- Colatz conjecture (while, if)
- obvod a obsah obdélníka
- vypsat z listu nejdřív sudá a pak lichá čísla
- BMI
- fibonacci
- platba částky mincemi
- hledat palindromy v textu
- posoudit žadatele o půjčku
- generovat zaklínadla CVCVCVCV
- chatbotíček ala pohádkové dítě (Co je word[-1]?)
- vypsat písmena/slova 10-20
- nahradit v textu všechna A za E (pak všechny samohlásky)
- nahradit v textu každý výskyt slova Babiš za slovo X, každý výskyt slova Zeman za slovo Y
- vypsat každé 10. slovo z textu
- převod bin2dec
- rozklad na prvočísla
- křížení slov