Cykly se v programování používají tehdy pokud chceme nějakou část kódu několikrát opakovat. Samozřejmě by bylo velmi nepraktické celý kód vícekrát opisovat. Navíc se v praxi potkáme se situacemi, kdy dopředu nevíme, kolik iterací cyklu budeme potřebovat. Tento přístup by tedy v mnoha případech nebyl ani možný.

V jazyku Python můžeme využít dvou základních typů cyklů.

Cyklus For

Základním typem cyklu je cyklus s celočíselnou podmínkou. Tento typ cyklu se používá obecně tehdy, pokud dopředu víme, kolikrát budeme chtít sekvenci příkazů opakovat. Je potřeba poznamenat, že není dopředu nutné znát konkrétní počet opakování, ale stačí nám informace, že chceme opakovat n-krát.

Základní struktura for cyklu vypadá následovně:

for prvek in list:
    # blok příkazů, které se mají opakovat.

List je “proměnná”, která může obsahovat více prvků, ať už je to sekvence čísel nebo textový řetězec (více List) Pokud bychom například chtěli vypsat čísla od 0 do 5 mohli bychom napsat toto:

for x in [0, 1, 2, 3, 4, 5]:
    print(x)

Samozřejmě takto zapsaný kód by byl dost nepraktický v případě, že bychom chtěli opakovat sekvenci například stokrát. Proto je k dispozici funkce range().

Funkce range()

Tato funkce vrací řadu čísel ve formátu intervalu(sekvence). Funkce range() má následující syntaxi:

range(začátek, konec, krok)
	# začátek - počáteční hodnota, tento parametr je nepovinný, defaultní hodnota je 0
	# konec   - koncová hodnota sekvence, tento parametr je povinný. 
	#           jelikož se čísluje od 0 tak tato hodnota už v sekvenci obsažena není
	# krok    - tento parametr určuje hodnotu o kterou se bude 
	
range(5) #sekvence [0, 1, 2, 3, 4]
range(5, 10) #sekvence [5, 6, 7, 8, 9]
range(5, 10, 2) #sekvence [5, 7, 9]

Využití funkce range() s cyklem for, by pak vypadal takto:

for x in range(5): 
	print(x) #výpis čísel 0, 1, 2, 3, 4

for x in range(1, 20, 2): 
	print(x) #výpis lichých čísel od 1 do 19

Pokud bychom chtěli například napsat program, který spočítá mocninu zadaného čísla pomocí opakovaného přičítání, vypadal by zápis takto:

cislo = int(input("Zadej cislo k umocneni: "))
mocnina = 0
for x in range(cislo):
	mocnina += cislo
print(f"Druha mocnina cisla {cislo} je {mocnina}.")

Práce s řetězci

Ze základního popisu funkčnosti for cyklu je patrné, že je standardně použitelné pro procházení prvků v Listu. Jelikož i textový řetězec je považován za List znaků, je možné použít for cyklus i pro iterování jednotlivých znaků v řetězci:

# Výpis jednotlivých znaků z textového řetězce, na samostatný řádek
for znak in "Hello World!":
	print(znak)

# Výpis jednotlivých znaků z textového řetězce,
# kdy za každý znak je vložena hodnota parametru end, v tomto případě tedy:
# H, e, l, l, o,  , W, o, r, l, d, !, 
for znak in "Hello World!":
	print(znak, end=", ")
	

While cyklus