Základy programování v jazyce Python (VŠCHT – LS 2023/2024)
Jiří tečka Znamenáček plus PYTHON zavináč gmail tečka com

Pomůcky

Python
~ tahák pro Python 3.x
~ Python Enhancement Proposals (PEPs), především pak PEP 8 -- Style Guide for Python Code

Komentovaná řešení
~ rozpoznávání samohlásek
~ výpis Fibonacciho posloupnosti
~ součet prvků v seznamu
~ slovník písmen v textu

Nástroje
~ výukové: Karel (webová implementace jazyka Karel v češtině) a Guido van Robot (Karel v Pythonu)
~ distribuce Pythonu: Python.org (hlavní), MiniConda (alternativní „se vším všudy“)
~ pythoní shelly: DreamPie (grafický shell s víceřádkovou historií)
~ pythoní IDE: PyScripter (pro Windows), Spyder (IDE specificky zaměřené na vědeckou práci), PyCharm (ultimátní programátorské IDE; volná verze Community Edition)
~ textové editory: Notepad2 (minimalistický), PSPad (český), Notepad++ (programátorský), Sublime Text (placený), CotEditor (pouze MacOS)
~ SQLite: SQLite.org, DB Browser for SQLite
~ regexpy: kiki-re (GUI pro vizuální testování regexpů)

Příklady z hodin

  1. PS: o programování obecně a konkrétně
  2. 2024-03-19:
  3. 2024-03-26:
  4. 2024-04-02:
  5. 2024-04-09:
  6. 2024-04-16:
    • Z důvodů nemoci hodina odpadá. Nastudujte si Komentovaná řešení zeshora, zvláště zpracování souborů (kdo nebyl minule).
  7. 2024-04-23:
  8. 2024-04-30:

Příklady a data k procvičování

Bloky

  1. Úvodní slovo & Organizace předmětu
    Potřebné programy a jejich instalace (Python, DreamPie, PSPad…)
  2. Kódování textů aneb „Co na to Unicode?“
  3. Úvod do Python'u za pomoci „želví“ (aneb relativní) grafiky:
    1. úvod
    2. další vlastnosti
    3. rekurzivní obrazce
  4. Aplikace želví grafiky – L-systémy (paralelní přepisovací gramatiky):
    1. úvod
    2. další příklady
  5. Základy Python'u:
        ~ základní řídicí konstrukce – podmínky, cykly, výjimky, funkce… (slajdy 12-17 o výjimkách pro informaci)
        ~ pravdivostní typ Boolean (včetně priorit operátorů)
        ~ použití funkce print()
        ~ funkce: základy, argumenty (parametry)
        ~ typy: řetězce, čísla, n-tice (tuples), slovníky, množiny, seznamy
        ~ přehled třídění/řazení v Python'u
        ~ kuchařka pro práci se soubory

        ~ generátorová notace
        ~ vstup dat do programu pomocí input() a sys.argv (po slajd 7)
        ~ kuchařka pro práci s moduly
        ~ …
  6. Další:
        ~ doc-testy v Python'u
        ~ práce s binárními daty: bajtové řetězce, bajtová pole, binární soubory
        ~ grafický formát PNM

        ~ další vestavěné datové typy: pojmenované n-tice (named tuples), slovníky s výchozími hodnotami (default dicts), modul Counter
        ~ Úprava kódu (aneb „Jak by mohl vypadat pythoní zdrojový kód“)

Domácí úkoly na (klasifikovaný) zápočet

Během kurzu se objeví nějaké nedořešené problémy, které vás nechám dopracovat doma. A na jejich základě pak nějak rozdělím klasifikované zápočty.

  1. Nainstalujte si Python. A nějaký vhodný textový editor. Úplně stačí základní distribuce z Python.org. Z editorů se pro začátek doporučuju vyhnout velkým pythoním IDE, tak se nic nenaučíte, bohatě postačí například český PSPad.
  2. Želví grafika: Zkuste vymyslet, jak asi byl želvou vytvořen následující obrázek, a poté ho zreplikujte programem: obrazec
    Nápověda: hrana=hrana+7
  3. Želví grafika a fyzika: Vyjděte z poslední verze programu Pes honí zajíce z hodiny a doplňte do honičky ještě jednoho psa, který bude stejně rychlý jako ten první, ale poběží ze souřadnic <220, -200>. Kdo z nich první chytí zajíce?
    PS: Můžete zkusit více variant s různými rychlostmi zajíce i psů. Případně se psy, kteří honí jiné psy :-)
  4. L-systémy: Upravte (poslední) program z hodiny na následující pravidla a vykreslete obrázek třetí generace jednoho z tzv. Penroseových dláždění:
    krok: 30
    úhel: 36
    axiom: [B]++[B]++[B]++[B]++[B]
    přepisovací pravidla:
    A C++D----B[-C----A]++
    B +C--D[---A--B]+
    C -A++B[+++C++D]-
    D --C++++A[+D++++B]--B
  5. Zpracování CSV-dat: Načtěte soubor aminokyseliny.csv (je v kódování UTF-8 a má hlavičkovou řádku), naparsujte z něj údaje o aminokyselinách (oddělovačem sloupečků je středník ;) a vypište je vhodně naformátované:
  6. Zpracování obecného textového vstupu: Řešte úlohu č. 6 z procvičování na parsování textových souborů.
    Nápověda: Stačí aplikovat například split('; ') a zbytek pořešíte pomocí strip() a vhodných výřezů [:] z řetězců, případně možná i replace().