Ř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.
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ý.
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).
Ř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áš.
Pro úplnost: občas uvidíš metodu 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)
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ěň znak číslo 2 ve slově "baňka" na "j"
print(zamen('baňka', 2, 'j')) # → bajka
# A podobně:
print(zamen('kočka', 1, 'a')) # → kačka
print(zamen('slůně', 1, 't')) # → stůně
print(zamen('kapka', 0, 'l')) # → lapka
Pozor na to, že řetězce v Pythonu nelze měnit. Musíš vytvořit nový řetězec poskládaný z částí toho starého.