Nauč se Python > Kurzy > Začátečnický kurz PyLadies > Funkce a řetězce > Řetězcové funkce a metody

Řetězcové funkce a metody

Řetězce umí všelijaké triky. Funkcí len() můžeš zjistit, jak je řetězec dlouhý; operátorem in pak jestli v sobě obsahuje daný podřetězec.

Zápis Popis Příklad
len(r) Délka řetězce len('čokoláda')
x in r True pokud je řetězec x obsažen v r 'oko' in 'čokoláda'
x not in r Opak x in r 'dub' not in 'čokoláda

Řetězce vždy berou v potaz velikost písmen, takže např. 'ČOKO' in 'čokoláda' je False. Kdybys chtěla porovnávat bez ohledu na velikost písmen, musela bys oba řetězce převést třeba na malá písmena a pak je porovnat.

A jak se převádí na malá písmena? K tomu budeme potřebovat další novou vlastnost Pythonu: metody.

Metody

Metoda (angl. method) je jako funkce – něco, co se dá zavolat. Na rozdíl od funkce je svázaná s nějakým objektem (hodnotou). Volá se tak, že se za objekt napíše tečka, za ní jméno metody a za to celé se, jako u funkcí, připojí závorky s případnými argumenty.

Řetězcové metody upper() a lower() převádí text na velká, respektive malá písmena. Zkus si to!

retezec = 'Ahoj'
print(retezec.upper())
print(retezec.lower())
print(retezec)

Všimni si, že původní řetězec se nemění; metoda vrátí nový řetězec, ten starý zůstává.

To je obecná vlastnost řetězců v Pythonu: jednou existující řetězec se už nedá změnit, dá se jen vytvořit nějaký odvozený.

Iniciály

Pro procvičení metod a vybírání znaků si zkus napsat program, který se zeptá na jméno, pak na příjmení a pak vypíše iniciály – první písmena zadaných jmen.

Iniciály jsou vždycky velkými písmeny (i kdyby byl uživatel líný mačkat Shift).

Řešení

Řetězcových metod je celá řada. Nejužitečnější z nich najdeš v taháku, který si můžeš stáhnout či vytisknout.

A úplně všechny řetězcové metody jsou popsány v dokumentaci Pythonu (anglicky; plné věcí, které ještě neznáš).

Všimni si, že len není metoda, ale funkce; píše se len(r), ne r.len(). Proč tomu tak je, to za nějakou dobu poznáš.

Metoda format

Pro úplnost: občas uvidíš metoda format, která doplní do šablony podobné jako u formátovacích řetězců (f'...').

sablona = '{a}×{b} je {vysledek}'
vypis = sablona.format(vysledek=3 * 4, a=3, b=4)
print(vypis)

Funguje i zkrácený zápis, kdy necháš závorky prázdné a argumenty nepojmenuješ:

vypis = 'Ahoj {}! Výsledek je {}.'.format('Elvíro', 7)
print(vypis)

Cvičení

Zkus napsat funkci zamen(retezec, pozice, znak).

Tato funkce vrátí řetězec, který má na dané pozici daný znak; jinak je stejný jako původní retezec. Například:

# Zaměň třetí znak ve slově "čokoláda"
print(zamen('čokoláda', 3, 'u'))   # → čokuláda

Pozor na to, že řetězce v Pythonu nelze měnit. Musíš vytvořit nový řetězec poskládaný z částí toho starého.

Řešení


Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.