Základy programování v jazyce Python (VŠCHT – LS 2024/2025)
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

Výuka o zkouškovém:
  1. 2025-05-19 (pondělí):
  2. 2025-05-20 (úterý):
  3. 2025-05-21 (středa):
  4. 2025-05-22 (čtvrtek):
  5. 2025-05-23 (pátek):
Konzultace ve zkouškovém:
  1. 2025-05-27 (úterý):
  2. 2025-05-28 (středa):
  3. 2025-05-30 (pátek):

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. Úvod do Python'u za pomoci „želví“ (aneb relativní) grafiky:
    1. úvod
    2. další vlastnosti
    3. rekurzivní obrazce
  3. Aplikace želví grafiky – L-systémy (paralelní přepisovací gramatiky):
    1. úvod
    2. další příklady
  4. Kódování textů aneb „Co na to Unicode?“
  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ší:
        ~ serializace pythoních datových struktur modulem pickle
        ~ základy kreslení grafů pomocí knihovny Matplotlib

        ~ doc-testy v Python'u
        ~ práce se souborovým systémem: knihovna pathlib
        ~ 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“)
  7. Python prakticky:
        ~ balíčky a virtuální prostředí:
    1. správa balíčků pomocí pipu
    2. správa virtuálních prostředí pomocí modulu venv
    3. prostředí Conda
        ~ práce s Jupyter Notebookem:
    1. úvod, instalace, spuštění
    2. základy práce

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
    PS: Tloušťka obrysové čáry byla nastavena příslušnou funkcí na hodnotu 3.
  3. Stochastický L-systém: Za pomoci jednotlivých kousků programů z hodiny vyřešte náhodný L-systém rostliny. Všechna tři přepisovací pravidla pro znak F jsou stejně pravděpodobná.
  4. Komplikovanější vstupní textová data: Řešte úlohu číslo 6 z procvičování na texty, tj. načtěte a zpracujte soubor prvky.1.txt. Pro splnění úkolu je třeba každou řádku rozdělit na šest sloupečků a ty důkladně „pročistit“ (funkce strip() a split()). A opět nezapomenout na to, že data z textového souboru jsou všechno řetězce, takže pro práci s čísly je nejdříve třeba je vhodně překonvertovat.
  5. Trocha počítání: Zkuste vytvořit program, který si z příkazové řádky vezme číslo a nakreslí vyplněnou hvězdu, která má stejný počet cípů. Příklad pro 88: 88-cípá hvězda
    PS – jedna z možností: Program pro obrázek hvězdičky z přednášky se dá s trochou přemýšlení napsat i pomocí smyčky for-in, kde se cyklus provede stejným počtem-krát, jako je vrcholů hvězdy (tam 36). Úhel otočení se přitom dá z tohoto čísla dopočítat a takto vyrobený program kreslí uzavřené a vybarvené hvězdy pro násobky čtyř (např. přímo pro číslo 4 nakreslí čtverec).