Programátoři se neradi opakují. Programování je o automatizaci: nebudeme zdravit každého člověka zvlášť, vezměme seznam padesáti lidí a pozdravíme je všechny najednou!
(No, někteří programátoři asi nejsou moc sociálně nadaní. Ale jinde se ta automatizace fakt hodí!)
Ještě si vzpomínáš na seznamy? Udělej si seznam jmen:
jmena = ['Rachel', 'Monica', 'Phoebe', 'Ola', 'Ty']
Udělejme program, který:
V Pythonu se takový cyklus – opakování „pro každý prvek seznamu“ – píše
pomocí příkazu for
:
for jmeno in jmena:
pozdrav(jmeno)
Celý program bude tedy vypadat takto:
def pozdrav(jmeno):
print('Vítam tě,', jmeno)
jmena = ['Rachel', 'Monica', 'Phoebe', 'Ola', 'Ty']
for jmeno in jmena:
pozdrav(jmeno)
A když ho spustíme:
$ python3 python_intro.py
Vitam ťa, Rachel
Vitam ťa, Monica
Vitam ťa, Phoebe
Vitam ťa, Ola
Vitam ťa, Ty
Jak vidíš, vše, co jsi vložila dovnitř příkazu for
s odsazením,
se zopakuje pro každý prvek seznamu jmena
.
Cyklus for
můžeš použít i s jinými hodnotami než se seznamy.
Často se používá s funkcí range()
.
Když chceš něco 200-krát zopakovat, napiš:
for i in range(200):
print("Už nikdy nebudu házet igelit do táboráku!")
Jak to funguje?
for i in range(X)
se dá přeložit jako „pro každé číslo
od nuly do X“.
Funkce range
onu posloupnost čísel od nuly do X vytvoří.
Do proměnné i
Python postupně uloží každé číslo, podle toho po kolikáté
cyklem prochází.
for i in range(5):
print(i)
0
1
2
3
4
Všimni si, že samotné 5
není zahrnuto ve výsledku:
range(5)
počítá od 0 do 4.
Když počítáš od nuly a chceš pět čísel, skončíš u čtyřky.
A je to. Jsi naprosto skvělá! Tohle byla složitá lekce, takže bys na sebe měla být hrdá. My jsme na tebe velmi hrdí za to, že ses dostala tak daleko!
Naučila ses:
range
pomáhá když potřebuješ určitý konkrétní počet opakování.Můžeš si jít krátce odpočinout – protáhnout se, projít se, zavřít oči – než se pustíme do další kapitoly. :)
🧁
{ "data": { "sessionMaterial": { "id": "session-material:2019/brno-podzim-snake:intro:12", "title": "Cykly", "html": "\n \n \n\n <h1>Cykly</h1>\n<p>Programátoři se neradi opakují.\nProgramování je o automatizaci: nebudeme zdravit každého člověka zvlášť,\nvezměme seznam padesáti lidí a pozdravíme je všechny najednou!</p>\n<p>(No, někteří programátoři asi nejsou moc sociálně nadaní.\nAle jinde se ta automatizace fakt hodí!)</p>\n<p>Ještě si vzpomínáš na seznamy?\nUdělej si seznam jmen:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"n\">jmena</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s1\">'Rachel'</span><span class=\"p\">,</span> <span class=\"s1\">'Monica'</span><span class=\"p\">,</span> <span class=\"s1\">'Phoebe'</span><span class=\"p\">,</span> <span class=\"s1\">'Ola'</span><span class=\"p\">,</span> <span class=\"s1\">'Ty'</span><span class=\"p\">]</span>\n</pre></div><p>Udělejme program, který:</p>\n<ul>\n<li>Pro každé jméno ze seznamu jmen:<ul>\n<li>pozdraví daným jménem</li>\n</ul>\n</li>\n</ul>\n<p>V Pythonu se takový <em>cyklus</em> – opakování „pro každý prvek seznamu“ – píše\npomocí příkazu <code>for</code>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">for</span> <span class=\"n\">jmeno</span> <span class=\"ow\">in</span> <span class=\"n\">jmena</span><span class=\"p\">:</span>\n <span class=\"n\">pozdrav</span><span class=\"p\">(</span><span class=\"n\">jmeno</span><span class=\"p\">)</span>\n</pre></div><p>Celý program bude tedy vypadat takto:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">def</span> <span class=\"nf\">pozdrav</span><span class=\"p\">(</span><span class=\"n\">jmeno</span><span class=\"p\">):</span>\n <span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s1\">'Vítam tě,'</span><span class=\"p\">,</span> <span class=\"n\">jmeno</span><span class=\"p\">)</span>\n\n<span class=\"n\">jmena</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s1\">'Rachel'</span><span class=\"p\">,</span> <span class=\"s1\">'Monica'</span><span class=\"p\">,</span> <span class=\"s1\">'Phoebe'</span><span class=\"p\">,</span> <span class=\"s1\">'Ola'</span><span class=\"p\">,</span> <span class=\"s1\">'Ty'</span><span class=\"p\">]</span>\n<span class=\"k\">for</span> <span class=\"n\">jmeno</span> <span class=\"ow\">in</span> <span class=\"n\">jmena</span><span class=\"p\">:</span>\n <span class=\"n\">pozdrav</span><span class=\"p\">(</span><span class=\"n\">jmeno</span><span class=\"p\">)</span>\n</pre></div><p>A když ho spustíme:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">$ </span>python3 python_intro.py\n<span class=\"go\">Vitam ťa, Rachel</span>\n<span class=\"go\">Vitam ťa, Monica</span>\n<span class=\"go\">Vitam ťa, Phoebe</span>\n<span class=\"go\">Vitam ťa, Ola</span>\n<span class=\"go\">Vitam ťa, Ty</span>\n</pre></div><p>Jak vidíš, vše, co jsi vložila dovnitř příkazu <code>for</code> s odsazením,\nse zopakuje pro každý prvek seznamu <code>jmena</code>.</p>\n<h2>Opakuj <var>n</var>-krát</h2>\n<p>Cyklus <code>for</code> můžeš použít i s jinými hodnotami než se seznamy.</p>\n<p>Často se používá s funkcí <code>range()</code>.\nKdyž chceš něco 200-krát zopakovat, napiš:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">200</span><span class=\"p\">):</span>\n <span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s2\">"Už nikdy nebudu házet igelit do táboráku!"</span><span class=\"p\">)</span>\n</pre></div><p>Jak to funguje?\n<code>for i in range(X)</code> se dá přeložit jako „pro každé číslo\nod nuly do <var>X</var>“.\nFunkce <code>range</code> onu posloupnost čísel od nuly do <var>X</var> vytvoří.\nDo proměnné <code>i</code> Python postupně uloží každé číslo, podle toho po kolikáté\ncyklem prochází.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">):</span>\n <span class=\"k\">print</span><span class=\"p\">(</span><span class=\"n\">i</span><span class=\"p\">)</span>\n</pre></div><div class=\"highlight\"><pre><code>0\n1\n2\n3\n4</code></pre></div><p>Všimni si, že samotné <code>5</code> není zahrnuto ve výsledku:\n<code>range(5)</code> počítá od 0 do 4.\nKdyž počítáš od nuly a chceš pět čísel, skončíš u čtyřky.</p>\n<h2>Shrnutí</h2>\n<p>A je to.\n<em>Jsi naprosto skvělá!</em>\nTohle byla složitá lekce, takže bys na sebe měla být hrdá.\nMy jsme na tebe velmi hrdí za to, že ses dostala tak daleko!</p>\n<p>Naučila ses:</p>\n<ul>\n<li><strong>Cyklus</strong> je způsob, jak opakovat nějaký postup několikrát po sobě</li>\n<li><code>range</code> pomáhá když potřebuješ určitý konkrétní počet opakování.</li>\n</ul>\n<p>Můžeš si jít krátce odpočinout – protáhnout se, projít se,\nzavřít oči – než se pustíme do další kapitoly. :)</p>\n<p>🧁</p>\n\n\n " } } }