Seminář programování v Pythonu na PORGu - lekce 4


(Opakování z minulé lekce)

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.

Doplněno: úkol na počítání písmenek s tříděním od nejméně častých po nejčastější

#!/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.")

for cyklus přes dvojice hodnot

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.

Pythonovský program jako skript

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.)

Otevření souboru ke čtení

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().

Otevření souboru pro zápis s parametrem "w"

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').


Zpět na obsah | Poslední úprava: 2011-10-16