Cyklus v Pythonu a dotaz v SQL
Máme tabulku s prodejem učebnic chemie v několika městech České republiky.
| Město | Prodané kusy v roce 2021 | Prodané kusy v roce 2022 | 
|---|---|---|
| Praha | 4200 | 4900 | 
| Brno | 2500 | 2100 | 
| Ostrava | 1500 | 1100 | 
| Plzeň | 1000 | 700 | 
| Liberec | 700 | 500 | 
| Olomouc | 400 | 300 | 
Data máme zadaná v Pythonu jako dvourozměrný seznam. Naším úkolem je zjistit, ve kterých městech prodeje učebnice poklesly.
prodej_knih = [
    ["Praha", 4200, 4900],
    ["Brno", 2500, 2100],
    ["Ostrava", 1500, 1100],
    ["Plzeň", 1000, 700],
    ["Liberec", 700, 500],
    ["Olomouc", 400, 300]
]
Řešení úlohy v SQL
Uvažujme, jak bychom řešili příklad v SQL. Tento příklad je založený na tom, že říkáme, jaký by měl být výsledek. Jinak řečeno, říkáme, co chceme. Neříkáme, jakým způsobem by měl počítač k požadovanému výsledku dojít.
SELECT mesto
FROM prodej_knih
WHERE rok2 < rok1;
Řešení úlohy v Pythonu
V Pythonu s využitím cyklu říkáme, co má počítač udělat, tj. dáváme mu posloupnost kroků, kterou má provést, aby dospěl k námi požadovanému výsledku. Instrukce, které počítači dáme, jsou následující:
- Projdi jednotlivé prvky seznamu (projdi tabulku řádek po řádku).
 - Pro každý prvek (podseznam) se podívej, jestli je hodnota ta pozici 1 větší než hodnota na pozici 2.
 - Pokud ano, vypiš prvek na pozici 0.
 
# Projdi tabulku prodej knih řádek po řádku
for radek in prodej_knih:
    # Podívej se, jestli je hodnota na  pozici 1 větší než hodnota na pozici 2
    if radek[1] > radek[2]:
        # Pokud ano, vypiš na oprazovku hodnotu na pozici 0
        print(radek[0])
První opakování cyklu
Python do proměnné radek vloží to, co je na začátku seznamu, tj. prodeje v Praze. To, že jde o proměnnou radek, určíme tím, že název radek vložíme mezi for a in.
for radek in prodej_knih:
Nyní je vyhodnocená podmínka
    if radek[1] > radek[2]:
Hodnota radek[1] je 4200 a hodnota radek[2] je 4900. Není tedy pravda, že je hodnota radek[1] větší než hodnota na pozici radek[2], proto nespouštíme kód uvnitř podmínky. V cyklu již další příkazy nejsou a pokračuje dál.
Druhé opakování cyklu
Python vidí, že není na konci seznamu, a proto tedy spouští cyklus znovu. Do proměnné radek vloží to, co je na dalším místě, tj. prodeje v Brně.
Nyní je vyhodnocená podmínka
    if radek[1] > radek[2]:
Hodnota radek[1] je 2500 a hodnota radek[2] je 2100. V tomto případě je pravda, že hodnota radek[1] je větší než radek[2]. To znamená, že prodeje skutečně poklesly.
Python nyní spouští příkaz, který je uvnitř podmínky.
        print(radek[0])
Hodnota radek[0] se nyní zobrazí na obrazovce.
Třetí opakování cyklu
Třetí opakování cyklu se týká Ostravy.
I zde bude podmínka vyhodnocena jako pravda a Python vypíše i "Ostrava".
Čtvrté opakování cyklu
Další pokračování se týká Plzně.
Prodeje poklesly i zde.
Páté opakování cyklu
V Liberci prodeje taktéž klesly.
Šesté opakování cyklu
A v Olomouci též prodeje taktéž klesly.