Trenér řekne: „Uběhni 10 koleček.“ Neříká desetkrát „uběhni kolečko“. Řekne to jednou a dodá, kolikrát. Program to umí stejně. Místo deseti stejných řádků napíšeš jeden cyklus.
Cykly počítají součty, procházejí seznamy žáků, opakují hru, dokud hráč nechce skončit. Bez nich by programy byly nekonečně dlouhé.
print.for i in range(3): je tělem odsazený řádek pod ním.for i in range(3): je to i, postupně 0, 1, 2.range()Funkce, která vytvoří řadu celých čísel. range(n) jde od 0 do n − 1. range(a, b) od a do b − 1. range(a, b, krok) s daným krokem. Horní mez se nezahrnuje.range(2, 6) jsou čísla 2, 3, 4, 5.for použiješ, když víš, kolikrát nebo přes co se má opakovat.
for i in range(1, 6): print(i * i)Vypíše 1, 4, 9, 16, 25. Proměnná i nabývá hodnot 1 až 5, šestka už ne.
for i in range(10, 0, -2): print(i)?s = 0, pak for i in range(1, 101): → s = s + i, nakonec print(s). Proměnná s je sčítač, na začátku musí být 0. Vypíše 5050. Horní mez je 101, aby se započítala i stovka.while (dokud) opakuje tělo, dokud platí podmínka. Použiješ ho, když předem nevíš, kolikrát se bude opakovat.
heslo = ""while heslo != "sezam": heslo = input("Heslo: ")print("Vítej!")Program se ptá pořád dokola, dokud uživatel nenapíše „sezam“. Může to být jednou i stokrát.
for i in range(1, 10): vypíše čísla 1 až 10.range(1, 11).Horní mez range se do řady nikdy nezahrnuje.
for použiješ, když znáš počet opakování (range(a, b) jde od a do b − 1). while opakuje, dokud platí podmínka.Programátor často neví, proč program dělá něco jiného, než čekal. Pomůže mu trasování: projde cyklus ručně a po každém průchodu si zapíše hodnoty proměnných do tabulky. Na písemce z programování to po tobě budou chtít taky.
Naučíš se oba cykly v Pythonu, příkazy break a continue a hlavně to, jak cyklus spolehlivě „přehrát v hlavě“.
forProjde postupně všechny prvky nějaké řady: čísla z range(), písmena řetězce, prvky seznamu. Počet průchodů je dán délkou řady.for z in "ahoj": projde písmena a, h, o, j.whilePřed každým průchodem zkontroluje podmínku. Když platí, provede tělo. Když neplatí, cyklus skončí.while n > 1:while x > 0: print(x) bez změny x.break a continuebreak cyklus okamžitě ukončí. continue přeskočí zbytek těla a pokračuje dalším průchodem.Hledáš první záporné číslo: jakmile ho najdeš, break.n = 10c = 0while n > 1: n = n // 2 c = c + 1print(c)| Kontrola | n | c | n > 1? |
|---|---|---|---|
| před cyklem | 10 | 0 | ano |
| po 1. průchodu | 5 | 1 | ano |
| po 2. průchodu | 2 | 2 | ano |
| po 3. průchodu | 1 | 3 | ne → konec |
Vypíše 3. Program spočítal, kolikrát jde 10 vydělit dvěma, než dojdeš k 1.
for i in range(5): → if i == 3: break → print(i)?break, cyklus končí dřív, než se 3 vypíše. Výstup: 0, 1, 2.for i in range(5): → if i % 2 == 0: continue → print(i)?print díky continue. Vypíší se jen lichá: 1, 3.i = 0 a while i < 5: print(i)i = 0 a while i < 5: → print(i) → i = i + 1Bez změny i je podmínka pořád pravdivá a cyklus nikdy neskončí.
for prochází prvky řady, while opakuje, dokud platí podmínka. break cyklus ukončí, continue skočí na další průchod. Neznámý cyklus pochopíš trasovací tabulkou.