Sissejuhatus Pythoni pesasilmustesse

Tere tulemast Pythoni õppekursuse teise peatüki juurde - Nested Loops. Suurepärane viis silmuse sidumiseks on pesastatud silmused tõestanud oma väärtust igas programmeerimiskeeles. Täna keskendume konkreetselt Pythonile - tüüpidele, süntaksile ja näidetele. Alustame siis.

Pesastatud silmused

Enne spetsiaalselt Pythoni jätkamist oleks hea lühidalt tutvuda Nested Loopsiga üldiselt. Kui mõne teise silmuse kehas on silmus, nimetatakse seda pesastatud silmuseks. See tähendab, et me tahame sisemise silmuse koodi mitu korda käivitada. Väline silmus kontrollib, mitu iteratsiooni sisemine silmus läbib. Silmuse pesastamise põhinäide on:

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

Siinkohal tuleb märkida, et mis tahes tüüpi silmuseid saab teise silmuse sisse pesa panna. Näiteks võib mõne aja silmuse pesastada silmuse sisse või vastupidi.

Pythoni pesasilmused

1) Lülitatud süntaksi jaoks

Pythoni pesa põhisüntaks on:

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

Näide

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

Väljund:

Täitmise voog

Proovime mõista ülaltoodud programmi täitmisvoogu. Programmis kasutasime tähtede mustri printimiseks kahte iteratsioonimuutujat i ja j.

Kompilaator algab reaga 1. See kohtub silmuse ja vahemiku funktsiooniga. Pythoni vahemiku funktsioon väljastab korduva täisarvude massiivi vahemikus 0 kuni argumendis täpsustatud arvuni. Argumendi number on massiivist välja jäetud. Meie puhul genereerib see massiivi (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10). Nüüd teab kompilaator, et ta peab järgmise lausekomplekti täitma kümme korda.

2. reale minnes kohtub silmuse ja ulatuse funktsiooniga teine. Pange tähele, et selle vahemiku funktsiooni argument on meie iteratsioonimuutuja i arvutatud väärtus. Niisiis, see genereerib dünaamiliselt massiivi sõltuvalt i väärtusest. Kui i = 0, on massiiv tühi. Kui i = 1, on massiivi (0). Kui i = 2, on massiivi (0, 1) jne.

Niisiis, rea 3 täitmise arv sõltub otseselt i väärtusest. Pange tähele, et osa lõpp = '' rivis 3. Selle eesmärk on vältida Pythoni prinditud reavoolu iga tähe järel. Soovime liinisöödet ainult välimise silmuse iga iteratsiooni lõpus. Seega oleme oma koodi 4. real selgesõnaliselt välja kirjutanud reavoolu.

Uurime nüüd tähelepanelikult meie pesastatud aasa iga iteratsiooni.

Välissilmuse kordamine 1

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

Väliskontuuri iteratsioon 2

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

Väliskontuuri iteratsioon 3

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

Väliskontuuri iteratsioon 4

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

.
.
.

Väliskontuuri iteratsioon 10

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

Väliskontuuri iteratsioon 11

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

2) Pesastatud, kui silmus

Süntaks

Pythoni silmuse pesemise süntaks on:

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

Erinevalt for-loop-st ei ole kuigi loop-l eelkompileeritud korratav jada. Kuigi silmus täidab koodi seni, kuni avaldis tõeseks osutub. Niisiis, arendaja peab alati meeles pidama iteratiivse muutuja / avalduse värskendamist, vastasel juhul läheb silmus lõpmatu täitmisrežiimi.

Näide

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äljund:

Täitmise voog

Koodi 1. rida seab välimise silmuse iteratiivse muutuja algväärtusele. Järgmine rida on välimise silmuse algus. Selle avaldis on i <= 5. Pärast iga iteratsiooni hinnatakse selle avalduse tegelikku väärtust. Teostus siseneb ahelasse ainult siis, kui tingimus on tõene. Niipea kui seisund muutub valeks, ling lõpetatakse.

Kuna I algväärtus on 1, on 2. rea tingimus tõene. Niisiis, kompilaator liigub reale 3 ja seab meie sisemise silmuse iteratiivse muutuja j väärtuseks 5. Reas 4 on jällegi mingi aja silmus avaldisega, mis hindab tõeseks. Niisiis, kompilaator täidab read 5 ja 6. Seejärel liigutakse tagasi reale 4 ja hinnatakse tingimust. Kui tingimus on tõene, siseneb see uuesti ridadesse 5 ja 6. Kui tingimus muutub valeks, siis silmus lõpetatakse ja järgmised täitmisele kuuluvad read on read 7 ja 8. Sama järgitakse välimise silmuse jaoks.

Rida 6 ja 7 on väga olulised, kuna need värskendavad meie iteratiivset muutujat. Ilma nendeta siseneks programmi voog lõpmatusse täitmisrežiimi, kuna samas kui silmuse avaldised põhjustavad alati tõrksust.

Kas peaksin katki minema, jätkama või mööda minema

Nagu peaaegu kõigi teiste programmeerimiskeelte puhul, on ka Pythonil mõiste break ja jätka. Need märksõnad aitavad lõpetada mis tahes silmuse või jätta silmuse teatud iteratsiooni vahele. Pythonil on ka teine ​​märksõna - pass. Vaatame neid.

1) paus

Katkendlik märksõna näitab kompilaatorit silmusest välja hüppamiseks ja selle täitmise lõpetamiseks.

Näide

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

Väljund:

Ülaltoodud programm murrab silmuse sisemise osa, kui I ja j väärtus on võrdsed. See ei teosta silmuse edasisi iteratsioone. Seda saab edaspidises avalduses mõista.

2) Jätkake

Jätkav märksõna näitab kompilaatorit, et jätta silmuse praegune iteratsioon vahele ja jätkata järgmise iteratsiooniga.

Näide

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

Väljund:

Pange tähele, et sama programm, kuid katkestamise asemel jätkamise väitega, ei lõpe silmuse täitmist. See jätab ainult praeguse iteratsiooni vahele.

3) pass

Pass-märksõna on Pythonis huvitav. See tähendab lihtsalt mitte midagi teha. Seda kasutatakse siis, kui koodiplokki on vaja süntaktiliselt, kuid te ei soovi, et ühtegi käsku täidetaks. See toimib lihtsalt kohahoidjana.

Näide

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äljund:

Järeldus

Silmused on strateegiliselt väga olulised selleks, et õppida täitma ülesannet minimaalsete koodiridadega. See on lihtsalt põhiline sissejuhatus silmustesse. Soovitatav on mängida rohkem ringi, olla loominguline ja uurida silmuste potentsiaali veelgi.

Soovitatavad artiklid

See on Python Nested Loops'i juhend. Siin käsitleme Pythoni pesastatud silmuseid süntaksi, näidete, väljundi ja täitmisvooga. Lisateabe saamiseks võite vaadata ka järgmist artiklit -

  1. Pythoni raamid
  2. Kuidas paigaldada Python
  3. Silmuste juhend Pythonis
  4. Mis on Java liides?
  5. Erinevat tüüpi silmused koos selle eelistega
  6. Silmused VBScriptis näidetega

Kategooria: