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.
>>> slova_pozpatku("jelenovi pivo nelej")
'ivonelej ovip jelen'
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.
>>> 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)
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).
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()