Cyklus for v Pythonu
Python želva
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 při průchodu předem danou posloupností
hodnot, například pokud chceme provést známý počet opakování. Pokud
počet opakávání řídí podmínka, potřebujeme 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 rozlišování mezi podobnými kódy, u kterého se hodí dělat si poznámky na papír):