Cyklus for v Pythonu
Kód kostky
Cykly při programování využíváme pro opakování skupiny příkazů. Opakování označujeme často pojmem iterace.
Cyklus for využíváme, pokud dopředu víme, kolik
opakování bude cyklus mít. V ostatních případech využíváme cyklus
while.
Jednoduchý for cyklus
Základní využití cyklu for je pro prosté opakování sady
příkazů. Pomocí for i in range(10) zopakujeme 10× sadu
příkazů. Příkazy, které se mají opakovat, musíme odsadit. Takto tedy
vypíšeme desetkrát Ahoj:
for i in range(10):
print("Ahoj")Řídící proměnná
V průběhu cyklu se mění hodnota řídící proměnné (ve výše uvedeném
příkladu je to i). V každém opakování cyklu tak můžeme
provést něco trochu jiného v závislosti na aktuální hodnotě této
proměnné. Jakých hodnot řídící proměnná nabývá určuje část za
in. Pokud použijeme základní range, bude se řídící proměnná postupně zvětšovat o jedničku. Tento cyklus například
vypíše čísla od 0 do 9:
for i in range(10):
print(i)V rámci cyklu můžeme využívat více proměnných, pouze u řídící proměnné se však hodnota mění automaticky. Uvažme tento příklad:
y = 1
z = 2
for x in range(10):
y = x + y + z
print(x, y, z)Řídící proměnnou cyklu je x, jehož hodnota se tedy bude
postupně měnit (od 0 po 9). U proměnné y se bude hodnota
měnit, protože v rámci cyklu máme přiřazovací příkaz do y.
Hodnota proměnné z zůstane ve všech opakováních stejná,
protože z není řídící proměnná ani do ní v cyklu nic
nepřiřazujeme.
Využití range
Při základním použití kombinujeme for cyklus s funkcí
range, která vrací interval čísel a řídící proměnná
následně nabývá hodnot z tohoto intervalu.
Pozor: V informatice často počítáme od nuly (nikoliv
od jedničky jako normální lidé). Na to narážíme i zde:
range(n) vrací hodnoty od 0 do
n-1.
Pokud funkci range zadáme dva parametry, tj. voláme
range(a, b) dá nám interval čísel od a do
b-1. Můžeme zadat i třetí parametr, který udává délku
skoku. Příklady:
for x in range(5, 13): print(x, end=" ") # 5 6 7 8 9 10 11 12
for x in range(5, 16, 3): print(x, end=" ") # 5 8 11 14
for x in range(8, 0, -1): print(x, end=" ") # 8 7 6 5 4 3 2 1For cyklus se dá využít nejen ve spojení s range, ale i obecněji. Můžeme například použít seznamy:
for x in [3, 7, 10]:
print(x)Ukázky použití for cyklu
Sudá a lichá
Výpis informace o sudosti a lichosti prvních n
čísel:
n = 20
for i in range(1, n+1):
if i % 2 == 0:
print(i, "je sudé")
else:
print(i, "je liché")Součet řady čísel
Výpočet součtu čísel od 1 do n:
n = 10
s = 0
for i in range(1, n+1):
s = s + i
print("Součet od 1 do", n, "je", s)Mocniny dvojky
Výpis informace o prvních n mocninách dvojky:
n = 10
for x in range(1, n+1):
print("Dvojka umocněna na", x, "je", 2**x)Materiál k tisku: čtení kódu
Kromě níže uvedených interaktivních cvičení je k dispozici také materiál k tisku (cvičení na dobré rozlišení mezi několika podobnými kódy, u kterého se hodí dělat si poznámky na papír):