Slovníky: syntaxe a funkce, přidávání nových prvků, odebírání prvků, slovník.get(klíč, výchozí_hodnota).
Pokročilejší práce s funkcemi: Lokální proměnné ve funkcích se nezachovají mimo funkci. Parametry určené polohou a tzv. pojmenované parametry. Funkce při volání nekontrolují typ parametrů. Navracení více proměnných z funkce. Jak vytvořit prázdnou funkci?
Úkol na počítání písmenek.
#!/usr/bin/env python3 ## Ulozime si zpracovavany text do promenne text = "Antananarivo" ## Vytvorime si zpocatku prazdny slovnik pocty_pismen = {} ## Prochazime pismenka jedno po druhem for pismeno in text: ## pocet dosavadnich vyskytu daneho pismene navysime o jedna pocty_pismen[pismeno] = pocty_pismen.get(pismeno, 0) + 1 ## (Vsimnete si, ze vyuzijeme druhy parametr metody .get() a pro dosud neexistujici pismeno ## tak ziskame dosavadni pocet vyskytu jako nula) prevracene = [] for (pismeno, pocet) in pocty_pismen.items(): prevracene += [(pocet,pismeno)] prevracene.sort() ## Prochazime dvojice pismen a poctu jejich vyskytu for (pocet, pismeno) in prevracene: print("Pismeno ", pismeno, " se v textu vyskytuje ", pocet, "-krat.")
Jak na to: za klíčovým slovem for použijeme dvojici, která obsahuje dvě proměnné. Do nich se popořadě přiřadí první a druhá hodnota z vnořených n-tic v procházeném seznamu.
for (l, n) in list(a.items()): print("Znak ", l, " se v textu vyskytuje ", n, "krát.")
Úkol: Setřiďte písmena od nejčastějších do nejméně častých. Pomůcka: Když máte seznam, provede se na něm setřídění pomocí funkce seznam.sort().
Typickou úlohou je, že potřebujeme procházet prvky seznamu a současně vědět, na kolikátém prvku jsme. K tomu je funkce enumerate():
zverinec = ["krava", "osel", "slon"] print("Ocislovana zvirata jsou:", list(enumerate(zverinec)) ) for (cislo, zvire) in enumerate(zverinec): print(cislo+1, ". zvire ve zverinci je", zvire)
Pozn: enumerate() je funkce zabudovaná do pythonu. Seznam všech funkcí zabudovaných v pythonu je na docs.python.org/library/functions.html.
Hlavička (tzv. hashbang), komentáře a docstringy v souboru
#!/usr/bin/env python3 """ This program (...) author, e-mail, license """ def f(x): """This function ...""" pass # this is a comment print(1/2)
Jak zabránit zavření okna ve Windows? Umístěte na konec souboru funkci input(). (Pozn. Až budeme psát grafické aplikace, tak to pochopitelně nebude potřeba.)
f=open("aa.py") for line in f.readlines(): if not line[0:7] == "CENZURA": print(line) f.close()
Úkol: Napište program, který spočítá počet znaků a počet řádků v souboru. Nápověda: počet znaků v řetězci získáme funkcí len().
f=open("output.txt", "w") f.write("Zapsaný text bez zalomení řádku") f.write("Zalomení řádku zde:\nA tady je nový řádek.\n") f.close()
Úkol: Napište tentokrát program, který načte souboru "vstup.txt", očísluje mu řádky a vypíše ho do "výstup.txt". Nápověda: k doplnění uvozujících nul (leading zeros) na čtyřmístné číslo použijte funkci format(číslo, '04d').