Znakové řetězce jako posloupnost znaků

Znakové řetězce (string) v Pythonu jsou posloupnost jednotlivých znaků. K jednotlivým prvkům posloupnosti, v tomto případě ke znakům znakového řetězce, je možné přistoupit pomocí jejich indexu. Index určuje pořadí konkrétního znaku ve znakovém řetězci. Čísluje se od 0.

     0 1 2 3 4 5
     a n a n a s

Např. znak "a" má index 0. K jednotlivým znakům je možné přistoupit pomocí jejich indexu zapsaného v hranatých závorkách.

S jednotlivými znaky potom můžeme pracovat - vypisovat je, porovnávat...

Pokud bychom tedy chtěli vypsat postupně všechny znaky řetězce s museli bychom napsat:

Pokud se dostaneme mimo rozsah řetězce, dojde k chybě IndexError: string index out of range.

Pokud použijeme záporný index, berou se znaky z konce řetězce. Např. na indexu -1 je tedy znak "s".

Práce se znaky v cyklu

Vypisovat ručně znaky je ale nešikovné, práci za nás může udělat Python. Výpis dáme do cyklu, kde se nám bude automaticky zvětšovat index. Použijeme k tomu proměnnou, kterou jsme si pojmenovali i.

Můžeme chtít vypsat znaky z řetězců, které mají různou délku. Je tedy výhodnější použít místo konkrétní délky funkci len, která nám zjistí délku znakového řetězce.

V následujícím příkladě navíc ke každému znaku vypíšeme jeho index.

Všiměte si, že délka je 6 a indexy jsou pouze do 5.

Příklad:

Vypište indexy, na kterých je ve znakovém řetězci "ananas" znak "a"?

Poznámka

Znaky ve znakovém řetězci nemusí být jen písmena, mohou to být jakékoliv znaky, např.

nebo číslice

Operátor in

V Pythonu je kromě běžných operátorů, jako <, >, ==, !=, <=, >= také operátor in (a not in). Operátor in zjistí, zda je nějaký konkrétní prvek v sekvenci prvků a vrátí True nebo False.

Funguje to také pro pod-řetězce:

Jak to funguje:

Python za nás projde celý řetězec a porovnává jednotlivé jeho části. (A dá mu to stejnou práci, jako kdybychom to procházeli my "ručně".)

Příklad použití:

Chceme zjistit, zda je v řetězci s znak "a":

for cyklus - první seznámení

for cyklus v Pythonu prochází prvky nějaké posloupnosti.

Pokud nám nezáleží na konkrétních indexech prvků posloupnosti a potřebujeme pouze projít její prvky, můžeme použít místo while cyklu for cyklus.

Jak to funguje:

for znak in s:

"pro každý znak v "ananas" proveď následující kód"

Python do proměnné znak dosadí nejprve první znak řetězce s, potom druhý a tak dále, dokud nedojde až na konec řetězce.

S proměnnou znak se dá uvnitř cyklu pracovat jako s jakoukoliv jinou proměnnou, tedy např. ji můžeme vypsat.

Jméno proměnné si můžete zvolit, jaké chcete. Já jsem zvolila jméno znak proto, aby byl kód pokud možno co nejlépe čitelný.

Příklad:

Kolikrát je ve znakovém řetězci "ananas" použit znak "a"?

Nápověda:

Počítejte si znaky "a", jejich počet si pamatujte v proměnné soucet.

Projděte všechny znaky, pokud se znak rovná znaku "a", zvětšte proměnnou soucet o 1.

Nakonec vypište obsah proměnné soucet.