Programování 1 – 6. cvičení

Přehled základních knihoven v Pythonu

Přehled všech standardních knihoven je v dokumentaci Pythonu. My si ukážeme jen několik z nich:

Cvičení na použití knihoven

Ladění pomocí logování

Program average_grade.py by měl počítat průměrnou známku několika studentů zaokrouhlenou na dvě desetinná místa. Bohužel, v programu je několik chyb. Vaším úkolem je chyby najít a odstranit. Využijte při tom záznamy z logování – když program spustíte, uloží se logy do souboru average_grade.log. Pak můžete logy v souboru projít a najít v nich chyby, které při běhu programu nastaly.

Existence souboru

Pomocí knihoven argparse a pathlib vytvořte program, který bude ověřovat existenci souboru.

Program dostane cestu k souboru jako svůj poziční argument na příkazové řádce. Výstupem by mělo být True nebo False podle toho, jestli daný soubor existuje.

Příklady

Předpokládejme, že váš program se jmenuje file_exists.py a že existuje soubor jménem soubor.

🦉 Bonus: Soubory a složky

Doplňte do programu další dva volitelné argumenty (options). Pokud je nastaven option -f, program ověřuje, že zadaná cesta existuje a je to soubor (ne složka). Pokud je nastaven option -d, program ověřuje, že zadaná cesta existuje a je to složka (ne soubor). Pokud jsou nastaveny oba optiony, program vypíše chybu, že nejde použít oba optiony najednou.

Předpokládejme, že váš program se jmenuje file_exists.py a že existuje soubor jménem soubor a složka jménem slozka.

Načtení seznamu osob z CSV

V souboru lide.csv je seznam jmen, e-mailů a telefonů několika lidí ve formátu CSV. Pomocí knihovny csv načtěte data ze souboru a vypište je v následujícím formátu:

Osoba: <name> <surname>
  E-mail: <email>
  Telefon: <phone>

Například pro soubor lide.csv:

name,surname,email,phone
Michal,Töpfer,topfer@d3s.mff.cuni.cz,123456789
Tomáš,Holan,holan@ksvi.mff.cuni.cz,111222333

vypište

Osoba: Michal Töpfer
  E-mail: topfer@d3s.mff.cuni.cz
  Telefon: 123456789
Osoba: Tomáš Holan
  E-mail: holan@ksvi.mff.cuni.cz
  Telefon: 111222333

Caesarova šifra

Doplňte řešení úlohy Caesarova šifra textu – soubor o načítání argumentů z příkazové řádky (pomocí knihovny argparse):

Program se pak spustí třeba takto: python caesar.py -f in.txt -o out.txt -k 3.

Generování náhodných CSV souborů podle JSON konfigurace

Na základě konfigurace uložené v JSON souboru config.json vygenerujte CSV soubor random.csvý s náhodnými hodnotami. Použijte knihovny json, csv a random.

Konfigurace obsahuje položky "rows" a "columns". Položka "rows" je celé číslo udávající, kolik řádků máte vygenerovat. Položka "columns" obsahuje seznam konfigurací sloupců. Každý sloupec má jméno ("name") a typ ("type"). Pokud je typ "number", obsahuje konfigurace sloupce navíc hodnoty "low" a "high" a vaším cílem je generovat náhodné číslo z tohoto rozsahu. Pokud je typ "choices", obsahuje definice sloupce navíc seznam "choices" a vaším cílem je generovat náhodnou položku ze seznamu.

Příklad konfigurace:

{
  "rows": 5,
  "columns": [{
    "name": "kostka",
    "type": "number",
    "low": 1,
    "high": 6
  },{
    "name": "mince",
    "type": "choices",
    "choices": ["panna", "orel"]
  }]
}

Vaším cílem je vygenerovat CSV soubor o daném počtu řádků, přičemž hodnota buňky je vždy náhodně vygenerovaná podle konfigurace daného sloupce. Nezapomeňte do CSV souboru napsat jména sloupců jako hlavičku.

Například pro konfiguraci výše (config.json) je možný výstup (random.csv) následovný:

kostka,mince
3,orel
1,orel
3,panna
5,orel
6,panna