Bevezetés a Python beágyazott hurkokba
Üdvözöljük a Python tanfolyam egy másik fejezetében - a Nested Loops. A hurok hurkolásának nagyszerű módja, a beágyazott hurkok minden programozási nyelven bebizonyították, hogy érdemesek. Ma konkrétan a Pythonra összpontosítunk - a típusokra, a szintaxisra és a példákra. Tehát kezdjük el.
Beágyazott hurkok
Jó lenne röviden megérinteni a beágyazott hurkokat általában, mielőtt kifejezetten folytatnák a Python-ot. Ha egy hurok létezik egy másik hurok testében, akkor azt beágyazott huroknak nevezzük. Ez azt jelenti, hogy a belső hurok kódját többször is végrehajtani akarjuk. A külső hurok szabályozza, hogy a belső hurok hány iterációt hajt végre. Beágyazott hurok alapvető példája a következő:
for (i=0; i<10; i++)
(
for (j=0; j<10; j++)
(
//This code will execute 100 times.
)
//This code will execute 10 times.
)
Itt érdemes megjegyezni, hogy bármilyen típusú hurok be lehet ágyazva egy másik hurokba. Például egy ideig tartó hurok beágyazható egy hurok belsejébe vagy fordítva.
Python beágyazott hurkok
1) Beágyazva a hurok szintaxisához
A Pythonba beágyazott hurok alapszintaxisa:
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élda
for i in range(11): #line 1
for j in range(i): #line 2
print('*', end='') #line 3
print('') #line 4
Kimenet:
Végrehajtási folyamat
Próbáljuk megérteni a fenti program végrehajtási folyamatát. A programban két i és j iterációs változót használtunk a csillagmintázat kinyomtatásához.
A fordító az 1. sorral kezdődik. Talál egy a for loop és a range függvényt. A Python tartományfüggvénye egy egész számok ismételhető tömbjét adja ki 0-tól az argumentumban megadott számig. Az argumentumszám ki van zárva a tömbből. Esetünkben tömböt generál (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10). A fordító tudja, hogy a következő utasításkészletet tízszer kell végrehajtania.
Amikor a 2. sorra mozog, újabb találkozik a hurok és a távolság funkcióval. Vegye figyelembe, hogy ennek a tartományfüggvénynek az argumentuma az i iterációs változó kiszámított értéke. Tehát dinamikusan tömböt generál az i értékétől függően. Ha i = 0, a tömb üres. Ha i = 1, a tömb (0). Ha i = 2, a tömb értéke (0, 1) és így tovább.
Tehát a 3. sor végrehajtásának száma közvetlenül az i értékétől függ. Vegye figyelembe, hogy a rész vége = '' 3-as vonal. Ez megakadályozza, hogy Python minden csillag után nyomtasson soros adagolást. Csak a külső hurok minden iterációjának végén vonalvezetést akarunk. Így kifejezetten kinyomtattuk a soros adagolást a kódunk 4. sorába.
Tehát most vizsgáljuk meg alaposan a hurokba beágyazott összes iterációját.
Külső hurok megismétlése 1
I = 0, j = (), output is a blank line.
Külső hurok ismétlése 2
I = 1, j = (0), output = *
Külső hurok ismétlése 3
I = 2, j = (0, 1), output = **
Külső hurok ismétlése 4
I = 3, j = (0, 1, 2), output = ***
.
.
.
Külső hurok ismétlése 10
I = 9, j = (0, 1, 2, 3, 4, 5, 6, 7, 8), output = *********
Külső hurok ismétlése 11
I = 10, j = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), output = **********
2) beágyazva, míg hurok
Szintaxis
A Python hurokba történő beágyazódásának szintaxisa:
while (expression_1): #Outer loop
(code to execute) #Optional
while (expression_2): #Inner loop
(code to execute)
A for huroktól eltérően, míg a while huroknak nincs előre összeállított megismételhető sorrendje. Miközben a hurok addig futtatja a kódot, amíg a kifejezés igazra nem kerül. Tehát a fejlesztõnek mindig szem előtt kell tartania az iteráló változó / kifejezés frissítését, különben a hurok végtelen végrehajtási módba lép.
Példa
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
Kimenet:
Végrehajtási folyamat
A kód 1. sora a külső hurok iteráló változóját kezdeti értékre állítja. A következő sor a külső, míg a hurok eleje. I = = 5 kifejezéssel rendelkezik. Ennek a kifejezésnek a valós értéke minden iteráció után ki van értékelve. A végrehajtás csak akkor lép be a hurokba, ha a feltétel igaz. Amint a feltétel hamis, a hurok megszakad.
Mivel az I kezdeti értéke 1, a 2. sorban szereplő feltétel igaz. Tehát a fordító a 3. sorra mozog, és a belső hurok j iteráló változóját 5-re állítja. A 4. sornak ismét van egy ideig tartó hurka egy kifejezéssel, amely igazra értékeli. Tehát a fordító végrehajtja az 5. és a 6. sort. Ezután visszatér a 4. sorra és kiértékeli a feltételt. Ha a feltétel igaz, akkor ismét bekerül az 5. és a 6. sorba. Ha a feltétel hamis, a hurkot megszakítják, és a következő végrehajtandó sorok a 7. és a 8. sor. Ugyanezt követi a külső hurok.
A 6. és a 7. sor nagyon fontos, mivel frissítik az iteráló változót. Nélkülük a programfolyamat végtelen végrehajtási módba lépne, mivel a loop-kifejezések mindig igazságot eredményeznek.
Ha el kellene szakadnom, folytatnom vagy átmennem
Mint szinte az összes többi programozási nyelvnél, a Python is rendelkezik a break és a folytatás fogalmával. Ezek a kulcsszavak segítenek bármilyen hurok lezárásában vagy a hurok egy adott iterációjának kihagyásában. A Pythonnak van egy másik kulcsszava is - a pass. Vessen egy pillantást ezekre.
1) Szünet
A szünet kulcsszó azt jelzi, hogy a fordító kiugrik egy hurokból és leállítja annak végrehajtását.
Példa
for i in range(5):
for j in range(5):
if i == j:
break
print(j, end='')
print('')
Kimenet:
A fenti program megszakítja a belső hurkot, ha I és j értéke azonos. A hurok további iterációit nem hajtja végre. Ez tovább érthető a folytatási nyilatkozattal.
2) Folytassa
A folytatódó kulcsszó azt jelzi, hogy a fordító kihagyja a hurok aktuális iterációját, és folytassa a következő iterációval.
Példa
for i in range(5):
for j in range(5):
if i == j:
continue
print(j, end='')
print('')
Kimenet:
Vegye figyelembe, hogy ugyanaz a program, de a folytatás utasításával a szünet helyett, nem fejezi be a hurok végrehajtását. Csak kihagyja az aktuális iterációt.
3) Pass
A jelszó kulcsszó érdekes Pythonban. Ez egyszerűen azt jelenti, hogy semmit nem teszünk. Akkor használja, amikor a kódblokkra szintaktikailag szükség van, de nem akarja, hogy bármely parancs végrehajtásra kerüljön. Ez egyszerűen helyőrzőként működik.
Példa
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('')
Kimenet:
Következtetés
A hurkok stratégiai szempontból nagyon fontosak, ha meg akarjuk tanulni egy feladat elvégzését minimális kódsorral. Ez csak egy alapvető bevezetés a hurkokba. Ajánlott többet játszani, kreatívvá válni és tovább vizsgálni a hurok lehetőségeit.
Ajánlott cikkek
Ez egy útmutató a Python beágyazott hurkokhoz. Itt a Python beágyazott hurkokat tárgyaljuk a szintaxissal, példákkal, kimeneti és végrehajtási folyamattal. A következő cikkben további információkat is megnézhet -
- Python keretek
- Hogyan kell telepíteni a Python-ot
- Útmutató a hurkokhoz a Pythonban
- Mi a Java interfész?
- Különböző típusú hurkok és azok előnyei
- Hurkok a VBScript-ben példákkal