Úvod do Pythonových vnořených smyček

Vítejte v další kapitole výukového kurzu Python - Nested Loops. Skvělý způsob, jak smyčku opakovat, se vnořené smyčky osvědčily v každém programovacím jazyce. Dnes se zaměříme konkrétně na Python - typy, syntaxi a příklady. Pojďme tedy začít.

Vnořené smyčky

Bylo by dobré krátce se dotknout základny na Vnořených smyčkách obecně, než budeme pokračovat konkrétně s Pythonem. Pokud uvnitř těla jiné smyčky existuje smyčka, nazývá se vnořená smyčka. To znamená, že chceme provést kód vnitřní smyčky vícekrát. Vnější smyčka řídí, kolik iterací bude vnitřní smyčka procházet. Základní příklad vnořené smyčky je:

for (i=0; i<10; i++)
(
for (j=0; j<10; j++)
(
//This code will execute 100 times.
)
//This code will execute 10 times.
)

Zde je třeba poznamenat, že jakýkoli typ smyčky lze vnořit do jiné smyčky. Například smyčku while lze vnořit do smyčky for for nebo naopak.

Python vnořené smyčky

1) Vnořená pro smyčkovou syntaxi

Základní syntaxe vnořené smyčky v Pythonu je:

for (iterating_variable_1) in (sequence_1): #Outer Loop
for (iterating_variable_2) in (iterating_variable_1/sequence_2): #Inner Loop
(code to execute)

Příklad

for i in range(11): #line 1
for j in range(i): #line 2
print('*', end='') #line 3
print('') #line 4

Výstup:

Prováděcí tok

Zkusme pochopit průběh provádění výše uvedeného programu. V programu jsme použili dvě iterační proměnné i a j k tisku vzoru hvězd.

Kompilátor začíná řádkem 1. Setká se s funkcí smyčky for a range. Funkce rozsahu v Pythonu vydává iterovatelné pole celých čísel od 0 do čísla specifikovaného v argumentu. Číslo argumentu je vyloučeno z pole. V našem případě vygeneruje pole (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10). Nyní kompilátor ví, že musí provést další sadu příkazů 10krát.

Když se přesune na řádek 2, narazí na jinou funkci smyčky a rozsahu. Všimněte si, že argument této funkce rozsahu je vypočítaná hodnota naší iterační proměnné i. Dynamicky tak generuje pole v závislosti na hodnotě i. Když i = 0, pole je prázdné. Když i = 1, pole je (0). Když i = 2, pole je (0, 1) atd.

Počet provedení řádku 3 tedy přímo závisí na hodnotě i. Všimněte si konce end = '' inline 3. Tím se zabrání tomu, aby Python tiskl řádek po každé hvězdě. Chceme pouze řádkování na konci každé iterace vnější smyčky. Proto jsme explicitně vytiskli řádek v řádku 4 našeho kódu.

Nyní tedy podrobně prozkoumáme každou iteraci naší vnořené smyčky.

Iterace vnější smyčky 1

I = 0, j = (), output is a blank line.

Iterace vnější smyčky 2

I = 1, j = (0), output = *

Iterace vnější smyčky 3

I = 2, j = (0, 1), output = **

Iterace vnější smyčky 4

I = 3, j = (0, 1, 2), output = ***

.
.
.

Iterace vnější smyčky 10

I = 9, j = (0, 1, 2, 3, 4, 5, 6, 7, 8), output = *********

Iterace vnější smyčky 11

I = 10, j = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), output = **********

2) Vnořená smyčka

Syntax

Syntaxe pro vnoření během smyčky v Pythonu je:

while (expression_1): #Outer loop
(code to execute) #Optional
while (expression_2): #Inner loop
(code to execute)

Na rozdíl od smyčky for nemá smyčka while předkompilovanou iterovatelnou sekvenci. Zatímco loop udržuje provádění kódu, dokud se výraz nevyhodnotí jako true. Vývojář tedy musí vždy pamatovat na aktualizaci iterační proměnné / výrazu, jinak smyčka přejde do režimu nekonečného spuštění.

Příklad

i=1 #line 1
while(i<=5): #line 2
j=5 #line 3
while(j>=i): #line 4
print(j, end=' ') #line 5
j-=1 #line 6
i+=1 #line 7
print() #line 8

Výstup:

Prováděcí tok

Řádek 1 kódu nastavuje iterační proměnnou vnější smyčky na počáteční hodnotu. Další řádek je začátek vnější smyčky while. Má výraz i <= 5. Tento výraz je vyhodnocen na skutečnou hodnotu po každé iteraci. Provedení vstupuje do smyčky, pouze pokud je podmínka pravdivá. Jakmile se stav stane nepravdivým, smyčka je ukončena.

Protože počáteční hodnota I je 1, je podmínka v řádku 2 pravdivá. Takže kompilátor přejde na řádek 3 a nastaví iterační proměnnou j naší vnitřní smyčky j na 5. Řádek 4 má opět smyčku while s výrazem, který se vyhodnocuje jako true. Takže kompilátor provede řádky 5 a 6. Poté se přesune zpět na řádek 4 a vyhodnotí stav. Pokud je podmínka pravdivá, znovu vstoupí do řádků 5 a 6. Pokud se podmínka stane nepravdivou, smyčka je ukončena a další řádky, které mají být provedeny, jsou řádek 7 a 8. Totéž platí pro vnější smyčku.

Řádky 6 a 7 jsou velmi důležité, protože aktualizují naši iterační proměnnou. Bez nich by programový tok vstoupil do nekonečného režimu provádění, protože výrazy smyčky while by vždy vyústily v truthy.

Měl bych se zlomit, pokračovat nebo projít

Stejně jako u téměř všech ostatních programovacích jazyků má i Python koncept přerušení a pokračování. Tato klíčová slova pomáhají ukončit jakoukoli smyčku nebo přeskočit konkrétní iteraci smyčky. Python má také další klíčové slovo - pass. Pojďme se na ně podívat.

1) Přestávka

Klíčové slovo break označuje kompilátor vyskočit ze smyčky a ukončit jeho provádění.

Příklad

for i in range(5):
for j in range(5):
if i == j:
break
print(j, end='')
print('')

Výstup:

Výše uvedený program přeruší vnitřní smyčku, pokud jsou hodnoty I a j stejné. Nevykonává další iterace smyčky. Tomu lze dále porozumět pomocí prohlášení o pokračování.

2) Pokračujte

Klíčové slovo pokračovat označuje, že kompilátor přeskočí aktuální iteraci smyčky a pokračuje další iterací.

Příklad

for i in range(5):
for j in range(5):
if i == j:
continue
print(j, end='')
print('')

Výstup:

Všimněte si, že stejný program, ale s příkazem pokračovat místo konce, neukončí provádění smyčky. Přeskočí pouze aktuální iteraci.

3) Pass

Klíčové slovo pass je v Pythonu zajímavé. Prostě to znamená, že nedělá nic. Používá se, když je blok kódu potřeba syntakticky, ale nechcete, aby byl proveden žádný příkaz. Jednoduše funguje jako zástupný symbol.

Příklad

for i in range(5):
for j in range(5):
if i == j:
#I am not sure what to do when i equals j, so for now I will pass.
pass
print(j, end='')
print('')

Výstup:

Závěr

Smyčky jsou strategicky velmi důležité naučit se provádět úkol s minimálními řádky kódu. Toto je pouze základní úvod do smyček. Doporučuje se hrát více, být kreativní a prozkoumat potenciál smyček dále.

Doporučené články

Toto je průvodce Python Nested Loops. Zde diskutujeme pythonové vnořené smyčky se syntaxí, příklady, výstupem a prováděcím tokem. Další informace naleznete také v následujícím článku -

  1. Python Frameworks
  2. Jak nainstalovat Python
  3. Průvodce po smyčkách v Pythonu
  4. Co je rozhraní Java?
  5. Různé typy smyček s jeho výhodami
  6. Smyčky ve VBScript s příklady

Kategorie: