Udělej v editoru nový soubor a ulož ho jako cykly.py
.
Budeš v něm zkoušet cykly.
První opakovací program, který napíšeš, bude dělat tohle:
Přeložené do jazyka Python to vypadá následovně:
for i in range(100):
print('Nikdy nebudu odsazovat o tři mezery!')
Na ono for i in range(100)
se detailněji podíváme za chvíli,
teď to pro nás bude “hlavička”, která říká “opakuj stokrát”.
Podobnou “hlavičku” už jsi viděla u příkazu if
.
Stejně jako u if
tu je na konci dvojtečka a za ní následuje
odsazený blok – tělo příkazu; to na co se hlavička vztahuje.
Tělo příkazu if
se provede jen někdy;
tělo příkazu for
se opakuje několikrát dokola.
Zkus napsat ještě jeden vzorový program, který v češtině zní:
A v Pythonu:
for pozdrav in 'Ahoj', 'Hello', 'Hola', 'Hei', 'SYN':
print(pozdrav + '!')
Opět je tu hlavička a tělo příkazu.
Tentokrát se na hlavičku podívej pozorněji.
Pythonní for promenna in sekvence
znamená „Pro každé promenna ze sekvence“.
Jméno proměnné si volíš sama.
Příkaz for
danou proměnnou vždy nastaví na aktuální
hodnotu a pak provede všechno, co je v odsazeném těle cyklu.
Program výše tedy funguje úplně stejně, jako kdybys napsala:
pozdrav = 'Ahoj'
print(pozdrav + '!')
pozdrav = 'Hello'
print(pozdrav + '!')
pozdrav = 'Hola'
print(pozdrav + '!')
pozdrav = 'Hei'
print(pozdrav + '!')
pozdrav = 'SYN'
print(pozdrav + '!')
Vraťme se k for i in range(100)
.
Už víš, že to znamená „Pro každé i ze sekvence range(100)
“.
Co je ale to range
? Když si ho vypíšeš, nevypadne nic vysvětlujícího:
>>> range(100)
range(0, 100)
Je ale použité jako „sekvence“
v for promenna in sekvence
.
Je to nějaký výčet, nějaká posloupnost hodnot.
A teď už umíš vypsat, jaké to jsou!
for i in range(5): # Doporučuju použít jen 5 místo 100
print(i)
neboli česky:
range(5)
:Program spusť. Jaká čísla se vypíšou? (Neboli: co je v sekvenci range(5)
?)
Funkce range(n)
vrací sekvenci čísel.
Začíná od 0 a čísel v ní je přesně n.
(Na samotné n se tedy už nedostane.)
Často budeš potřebovat Pythonu říct, ať něco „n-krát zopakuje“.
Na to můžeš použít for i in range(n)
(„pro každé i od 0 do
n-1“) s tím, že proměnná i – „počitadlo“ – tě nezajímá.
V programu ji jednoduše nepoužiješ.
Teď by už mělo být jasné, jak funguje původní program:
for i in range(100):
print('Nikdy nebudu odsazovat o tři mezery!')
'Nikdy nebudu odsazovat o tři mezery!'
Python píše hlášky, jednu za druhou, a u toho si v promněnné i počítá, jak už je daleko.
Proměnná i se v matematice typicky používá pro celá čísla;
je to zkratka z termínu index (číslo prvku).
V programování se tradičně používá pro číslo průchodu cyklem,
jako v příkladu výše.
Pro lepší pochopení bývá dobré použít popisnější jméno proměnné, tady
například cislo_vypisu
; v krátkých a přehledných cyklech – a zvlášť v těch
které proměnnou nepoužívají – se ale často setkáš s krátkým i
, j
, k
…
Někteří programátoři pojmenovávají ignorovanou proměnnou _
(podtržítko).
To je pro Python jméno jako jakékoli jiné, ničím se neliší od i
nebo x
:
for _ in range(100):
print('Nikdy nebudu odsazovat o tři mezery!')