Vnořené cykly

Cyklus může obsahovat jiný cyklus. Říká se mu pak vnořený cyklus. Při každém průchodu vnějšího cyklu proběhne vnitřní cyklus celý. Vypišme všechna trička, která obchod prodává, v každé velikosti a každé barvě:

velikosti = ["S", "M"]
barvy = ["červená", "modrá", "černá"]
for velikost in velikosti:
    for barva in barvy:
        print(velikost, barva)

Vypíše:

S červená
S modrá
S černá
M červená
M modrá
M černá

Vnější cyklus vezme "S" a vnitřní cyklus projde všechny tři barvy. Teprve pak vezme vnější cyklus "M" a vnitřní cyklus znovu projde všechny barvy. Blok vnitřního cyklu se tak provede 2 × 3 = 6krát. Vnitřní cyklus je odsazený uvnitř vnějšího a jeho vlastní blok je odsazený ještě o úroveň víc. Proměnné obou cyklů pojmenujte různě (tady velikost a barva), abyste věděli, která je která.

Vnořené cykly se hodí i pro výpis tabulek. Zatím každý print() svůj řádek ukončil. S end=" " skončí místo toho mezerou a další print() pokračuje na stejném řádku. Řádek pak ukončí prázdný print(). Tento kód vypíše kus násobilky, jeden řádek pro každé číslo:

for radek in range(1, 4):
    for sloupec in range(1, 6):
        print(radek * sloupec, end=" ")
    print()
1 2 3 4 5 
2 4 6 8 10 
3 6 9 12 15 

Všimněte si, kde je prázdný print(): je odsazený jen jednou, takže patří do vnějšího cyklu. Provede se pokaždé, když vnitřní cyklus vypíše celý řádek.

Pokyny

Cestovní kancelář nabízí výlet do každého města ze seznamu mesta s každou aktivitou ze seznamu aktivity. Napište cyklus přes mesta, do něj vnořte cyklus přes aktivity a vypište každou dvojici příkazem print(mesto, aktivita). Výstup začíná řádky Praha Tenis, Praha Nákupy, Praha Památky, Brno Tenis…

Pod to vypište malou násobilku od 1 do 5: pět řádků a v každém pět čísel oddělených mezerou. První řádek je 1 2 3 4 5, druhý 2 4 6 8 10 a poslední 5 10 15 20 25. Použijte dva vnořené cykly s range(), print(..., end=" ") a prázdný print().

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

Zpět

10/11

Další