Procvičování: řetězce a seznamy

Příklad. Napište funkci slova_pozpatku(text), která v daném textu každé slovo otočí pozpátku a navrátí výsledek. Vyplatí se vám použít funkce str.split a str.join.

Ukázka. >>> slova_pozpatku("jelenovi pivo nelej") 'ivonelej ovip jelen'
Řešení. def slova_pozpatku(text): slova = text.split() for i in range(len(slova)): slova[i] = slova[i][::-1] return " ".join(slova) Chybné řešení. def slova_pozpatku(text): slova = text.split() for sl in slova: # tohle nebude fungovat: nastavením něčeho do proměnné sl se seznam nezmění # podrobnosti vysvětlím v příští hodině sl = sl[::-1] return " ".join(slova)

Příklad. Napište funkci vycenzuruj(text, zakazana), která dostane text a seznam slov k odstranění, a všechna slova ze seznamu v textu nahradí řetězcem "xxx". Split a join se hodí i tady.

Ukázka. >>> vycenzuruj("baník pyčo", ["cyp", "pyčo"]) 'baník xxx' Řešení. def vycenzuruj(text, zakazana): slova = text.split() vysledek = list() # záměrně odlišné od předchozí ukázky; tohle funguje for slovo in slova: if slovo in zakazana: vysledek.append("xxx") else: vysledek.append(slovo) return " ".join(vysledek)

Procvičování: práce se soubory

Příklad. Napište funkci secti(nazev_souboru), která otevře textový soubor, sečte hodnoty na každém řádku a výsledky zapíše do jiného souboru. Navíc, řádky začínající znakem procento % musí úplně ignorovat, ať na nich je cokoliv (jako by to byly komentáře).

Řešení. def secti(nazev_souboru): cteni = open(nazev_souboru, "r") zapis = open("secteny_" + nazev_souboru, "w+") for radka in cteni: if radka[0] != "%": vysledek = 0 for cislo in radka.split(): vysledek += int(cislo) print(vysledek, file=zapis) zapis.close()