Představ si náhrdelník z korálků s písmeny. Korálky jsou navlečené v pevném pořadí a dohromady tvoří slovo. Každý korálek má své místo, první, druhé, třetí.
V programu je text uložený přesně takhle, jako řada znaků. Říká se mu řetězec. Programy s textem pracují pořád: kontrolují hesla, hledají slova, upravují jména, čtou řádky ze souborů.
'…' nebo dvojitých "…".jmeno = "Eva""Ahoj!" má 5 znaků: A, h, o, j, !"Ahoj" je [0] „A“ a [-1] „j“.len()Počet znaků řetězce. Mezery se počítají taky.len("Ahoj světe") je 10.| znak | p | y | t | h | o | n |
|---|---|---|---|---|---|---|
| index | 0 | 1 | 2 | 3 | 4 | 5 |
Řetězec t = "python" má 6 znaků. t[0] je „p“. Řez t[od:do] vezme znaky od indexu od do do − 1: t[0:2] je „py“, t[2:] je „thon“, t[::-1] je pozpátku „nohtyp“.
"Ahoj" + " " + "Evo" spojí řetězce: „Ahoj Evo“."ha" * 3 zopakuje řetězec: „hahaha“."oj" in "ahoj" zjistí, jestli je část v řetězci: True.slovo = "banán"pocet = 0for znak in slovo: if znak == "a": pocet = pocet + 1print(pocet)Cyklus projde znaky b, a, n, á, n. „a“ je jen jednou, protože „á“ s čárkou je jiný znak. Vypíše 1.
s = "Programování". Co je s[0:3] a len(s)?if len(heslo) >= 8: → heslo je dost dlouhé. Funkce len vrátí počet znaků včetně mezer a číslic.jmeno = "eva" a pak jmeno[0] = "E" změní jméno na „Eva“.jmeno = "E" + jmeno[1:] nebo jmeno = jmeno.capitalize().Řetězce v Pythonu jsou neměnné. Jednotlivý znak nejde přepsat, Python ohlásí TypeError. Musíš vytvořit nový řetězec.
+ spojuje, * opakuje, in hledá. Řetězec nejde měnit, jen z něj vytvořit nový.Uživatel napíše do formuláře „ novák “ s mezerami a malým písmenem. Do databáze chceš uložit „Novák“. Nebo dostaneš řádek „Eva;17;Brno“ a chceš z něj tři údaje. Na to má Python sadu hotových metod.
Kdo je zná, zpracuje text na pár řádcích. Jsou to nástroje, které programátor používá denně.
str. Je neměnný: žádná metoda ho nezmění, vždy vrátí nový řetězec.s = "ahoj"hodnota.metoda()."ahoj".upper() vrátí „AHOJ“.f"…{výraz}…" vloží hodnotu do textu. Za dvojtečkou můžeš určit formát, :.2f znamená 2 desetinná místa.f"{3.14159:.2f}" je „3.14“.| Metoda | Co vrátí | Příklad → výsledek |
|---|---|---|
upper(), lower() | velká / malá písmena | "Ahoj".upper() → „AHOJ“ |
strip() | bez mezer na začátku a konci | " ahoj ".strip() → „ahoj“ |
replace(a, b) | nahradí všechna a za b | "kos".replace("k", "n") → „nos“ |
split(odd) | seznam částí podle oddělovače | "a,b,c".split(",") → ['a', 'b', 'c'] |
odd.join(seznam) | spojí seznam do řetězce | "-".join(["a", "b"]) → „a-b“ |
find(x) | index prvního výskytu, nebo −1 | "ahoj".find("o") → 2 |
count(x) | počet výskytů | "banana".count("a") → 3 |
startswith(x) | True, když začíná x | "Ahoj".startswith("A") → True |
isdigit() | True, když jsou to jen číslice | "12".isdigit() → True |
radek = "Eva;17;Brno".casti = radek.split(";") vytvoří seznam ['Eva', '17', 'Brno'].jmeno = casti[0] je „Eva“.vek = int(casti[1]) je číslo 17. Z textu „17“ udělá číslo přetypování.print(f"{jmeno} ({vek} let)") vypíše „Eva (17 let)“.jmeno = vstup.strip().capitalize(). Metody jdou řetězit: strip() vrátí „novák“ a capitalize() z něj udělá „Novák“ (první písmeno velké, ostatní malá).len(veta.split()). Bez argumentu dělí split() podle mezer: ['Dnes', 'je', 'hezky'], tedy 3 slova.s.upper() a pak print(s) vypíše text velkými písmeny.s = s.upper() a pak print(s).Řetězec je neměnný. upper() vrátí nový řetězec a ten musíš uložit, jinak se zahodí.
upper, strip, replace, split, join, find…) vždy vracejí nový řetězec, výsledek proto ulož. split rozdělí text na seznam, join ho zase spojí.