Lecture Thumbnail

Cyklus for

Programy sú od toho, aby nám uľahčovali prácu a život. Presne na to je cyklus for, s ktorým vieme ľahko prejsť zoznamy, rozsahy čísel a podobne.

Cyklus while vs. cyklus for

V predchádzajúcej lekcii sme sa naučili používať cyklus while. Spomeň si, ako funguje - opakuje blok kódu dovtedy, kým platí jeho podmienka. Hodí sa vtedy, keď nevieš vopred, koľkokrát sa má kód opakovať.

Cyklus for funguje naopak. Používa sa vtedy, keď presne vieš, koľkokrát alebo čím všetkým chceš prejsť - napríklad všetkými prvkami zoznamu alebo číslami od 1 do 10.

while for
Nevieme vopred, koľkokrát sa opakuje. Vieme vopred, koľkokrát sa opakuje
Opakuje sa, kým platí podmienka. Prechádza cez prvky zoznamu alebo rozsah čísel
Napr. opakované pokusy o generáciu unikátneho mena. Napr. výpis všetkých položiek v zozname.

Syntax cyklu for

Cyklus for má v Pythone nasledovný zápis:

Namiesto premenna si napíšeš akýkoľvek názov (často sa používa i, j, k, ak sa jedná o čísla alebo názov prvku, napr. ak prechádzame zoznam suradnice, tak nazveme túto premennú suradnica.) Toto je iteračná premenná, ktorá bude v každom opakovaní (iterácii) obsahovať aktuálny prvok zoznamu/rozsahu čísiel. kolekcia je nejaký zoznam, rozsah čísel (funkcia range()) alebo textový reťazec.

Funkcia range() - opakovanie kódu viackrát

Ak chceme cyklus for spustiť určitý počet krát (napríklad 5-krát alebo pre čísla od 1 do 10), využijeme na to funkciu range(). Táto funkcia nám vytvorí nejaký rozsah čísiel, ktorým vieme potom prechádzať.

Funkcia range() vie pracovať s 1, 2 alebo 3 argumentmi:

Všimni si!

  1. Funkcia range() nikdy nevypíše číslo stop - vždy sa zastaví o jedno skôr. Napríklad range(1, 6) vypíše čísla 1, 2, 3, 4, 5, ale nie 6. 
  2. Ak chceš ísť od 1 do 10 vrátane, napíš range(1, 11).

Príklad: odpočítavanie od 5 do 1

Prechádzanie zoznamu

Cyklus for je ideálny na prechádzanie zoznamov. Stačí za kľúčové slovo in napísať názov zoznamu - cyklus prejde každý prvok jeden po druhom.

Premenná meno obsahuje v každom opakovaní cyklu iný prvok zoznamu - najprv "Anna", potom "Saša", a tak ďalej. Keď prejde všetky prvky, cyklus sa ukončí.

Príklad: sčítanie všetkých čísel v zozname

Prechádzanie zoznamu pomocou range() a indexu

Niekedy potrebujeme v cykle vedieť aj index aktuálneho prvku, nielen jeho hodnotu. V takom prípade môžeme použiť range() spolu s funkciou len():

V príklade vyššie prechádzame všetkými prvkami (číslami) rozsahu čísiel od 0 do len(mena). Vieme, že indexovanie začína od 0, takže takýmto spôsobom vytvoríme rozsah indexov všetkých prvkov v zozname.

Zopakuj si!

  1. Cyklus for sa používa vtedy, keď vieš vopred, koľkokrát (alebo čím všetkým) chceš prejsť.
  2. Funkcia range() vytvára rozsah čísiel. 
  3. Pozor: range(1, 6) vygeneruje čísla 1, 2, 3, 4, 5 - stop číslo nie je zahrnuté.
  4. Cyklus for je ideálny na prechádzanie zoznamov. V každom opakovaní obsahuje iteračná premenná hodnotu aktuálneho prvku.
  5. Ak potrebuješ aj index aktuálneho prvku, použi range(len(zoznam)) a pristupuj cez zoznam[i].