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 týmto cyklusom vieme ľahko prejsť zoznamy, rozsahy čísel a viac.

Cyklus while vs. cyklus for

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

Cyklus for funguje inak. Používa sa vtedy, keď vieš presne, 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 alebo rozsah čísel
Napr. čakanie na správne heslo. 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š nejaký názov - táto premenná bude v každom opakovaní obsahovať aktuálny prvok. Namiesto kolekcia môže byť 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. Tento rozsah by sme mohli zapísať ako interval v matematike: 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():

Tip

Ak nepotrebuješ index, je prehľadnejšie a krajšie písať priamo for prvok in zoznam namiesto range(len(zoznam)). Používaj range + index len vtedy, keď index naozaj potrebuješ.

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() ti umožní opakovať kód určitý počet krát alebo prejsť rozsah čísel. 
  3. Dôležité: 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].
10. Funkcie I. - upratovanie a recyklácia kódu