Johdanto Python-sisäkkäisiin silmukoihin
Tervetuloa toiseen lukuun Python-oppimiskurssista - Nested Loops. Erinomainen tapa silmukan kääntämiseen, sisäkkäiset silmukat ovat osoittautuneet arvoisiksi jokaisella ohjelmointikielellä. Tänään keskitymme erityisesti Pythoniin - tyyppeihin, syntaksiin ja esimerkkeihin. Joten, aloitetaan.
Sisäkkäiset silmukat
Olisi hyvä koskettaa hetkeksi Nested Loops -silmukoita yleensä ennen kuin jatkat erityisesti Pythonilla. Jos toisen silmukan rungossa on silmukka, sitä kutsutaan nimellä Nested Loop. Tämä tarkoittaa, että haluamme suorittaa sisäisen silmukoodin useita kertoja. Ulompi silmukka säätelee kuinka monta toistoa sisäinen silmukka suorittaa. Perus esimerkki sisäkkäisestä silmukasta 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.
)
Huomattavana on, että minkä tyyppiset silmukat voidaan upottaa toisen silmukan sisään. Esimerkiksi jonkin aikaa silmukka voidaan upottaa silmukan sisäpuolelle tai päinvastoin.
Python Nested Loops
1) Sisältää silmukkasyntaksin
Python-sisäkkäisen silmukan perussyntaksi 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)
esimerkki
for i in range(11): #line 1
for j in range(i): #line 2
print('*', end='') #line 3
print('') #line 4
lähtö:
Suoritusvirta
Yritetään ymmärtää yllä olevan ohjelman toteutusvirta. Käytimme ohjelmassa kahta iterointimuuttujaa i ja j tähtikuvion tulostamiseen.
Kääntäjä alkaa rivillä 1. Se kohtaa silmukan ja aluetoiminnon. Pythonin aluefunktio tuottaa toistettavissa olevan kokonaislukujen ryhmän 0 - argumentissa määritettyyn lukuun. Argumentin numero on suljettu pois taulukosta. Tapauksessamme se tuottaa taulukon (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10). Nyt kääntäjä tietää, että sen on suoritettava seuraava lausejoukko 10 kertaa.
Kun se siirtyy riville 2, se kohtaa toisen silmukka- ja etäisyystoiminnon kannalta. Huomaa, että argumentti tälle aluefunktiolle on iterointimuuttujan i laskettu arvo. Joten se luo dynaamisesti taulukon i: n arvosta riippuen. Kun i = 0, taulukko on tyhjä. Kun i = 1, taulukko on (0). Kun i = 2, taulukko on (0, 1) ja niin edelleen.
Joten, kuinka monta kertaa rivi 3 suoritetaan, riippuu suoraan i: n arvosta. Huomaa, että osan loppu = '' inline 3. Tämän tarkoituksena on estää Python tulostamasta linjasyöttöä jokaisen tähden jälkeen. Haluamme linjasyötön vain ulkoisen silmukan jokaisen iterauksen lopussa. Olemme siis tulostaneet nimenomaisesti rivinsyötön koodillemme 4.
Joten nyt tutkitaan tarkkaan jokaisen sisäkkäisen silmukan iteraatiota.
Ulkosilmukan toisto 1
I = 0, j = (), output is a blank line.
Ulkosilmukan toisto 2
I = 1, j = (0), output = *
Ulkosilmukan toisto 3
I = 2, j = (0, 1), output = **
Ulkosilmukan toisto 4
I = 3, j = (0, 1, 2), output = ***
.
.
.
Ulkosilmukan toisto 10
I = 9, j = (0, 1, 2, 3, 4, 5, 6, 7, 8), output = *********
Ulkosilmukan toisto 11
I = 10, j = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), output = **********
2) Sisältää silmukan
Syntaksi
Pythonin sisäkkäisen pesän syntaksi on:
while (expression_1): #Outer loop
(code to execute) #Optional
while (expression_2): #Inner loop
(code to execute)
Toisin kuin for-silmukka, kun taas silmukalla ei ole esikäännettyä toistettavaa sekvenssiä. Silmukka jatkaa koodin suorittamista, kunnes lauseke arvostaa totta. Joten kehittäjän on aina pidettävä mielessä päivittää iteroiva muuttuja / lauseke, tai muuten silmukka siirtyy äärettömään suoritusmuotoon.
esimerkki
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
lähtö:
Suoritusvirta
Koodin rivi 1 asettaa ulomman silmukan iteroivan muuttujan alkuarvoon. Seuraava rivi on ulomman silmukan alku. Sillä on lauseke i <= 5. Tämä lauseke arvioidaan todellisen arvon suhteen jokaisen iteraation jälkeen. Suoritus tulee silmukkaan vain, jos ehto on totta. Heti kun tila muuttuu vääriksi, silmukka lopetetaan.
Koska I: n alkuarvo on 1, rivin 2 ehto on totta. Joten kääntäjä siirtyy riville 3 ja asettaa sisäisen silmukan iteroivan muuttujan j arvoon 5. Rivillä 4 on taas jonkin aikaa silmukka lausekkeella, joka arvioidaan totta. Joten kääntäjä suorittaa rivit 5 ja 6. Sen jälkeen se siirtyy takaisin riville 4 ja arvioi tilan. Jos ehto on totta, se tulee jälleen riveille 5 ja 6. Jos ehto tulee vääriksi, silmukka lopetetaan ja seuraavat suoritettavat rivit ovat rivit 7 ja 8. Samaa noudatetaan ulomman silmukan kohdalla.
Rivit 6 ja 7 ovat erittäin tärkeitä, koska ne päivittävät iteroivan muuttujamme. Ilman niitä ohjelmavirta siirtyisi äärettömään suoritusmuotoon, kun taas silmukkalausekkeet johtavat aina totuuteen.
Pitäisikö minun rikkoa, jatkaa tai ohittaa
Kuten melkein kaikilla muilla ohjelmointikielellä, myös Pythonilla on käsite break ja jatka. Nämä avainsanat auttavat lopettamaan minkä tahansa silmukan tai ohittamaan tietyn silmukan iteraation. Pythonilla on myös toinen avainsana - pass. Katsotaanpa näitä.
1) Tauko
Taukoavainsana osoittaa kääntäjän hyppäävän silmukasta ja lopettavan sen suorituksen.
esimerkki
for i in range(5):
for j in range(5):
if i == j:
break
print(j, end='')
print('')
lähtö:
Yllä oleva ohjelma katkaisee silmukan sisäosan, jos arvojen I ja j arvo on sama. Se ei suorita silmukan uusia iteraatioita. Tämä voidaan ymmärtää edelleen jatkavan lausunnon avulla.
2) Jatka
Jatka-avainsana osoittaa kääntäjän ohittamaan silmukan nykyisen iteraation ja jatkamaan seuraavalla iteraatiolla.
esimerkki
for i in range(5):
for j in range(5):
if i == j:
continue
print(j, end='')
print('')
lähtö:
Huomaa, että sama ohjelma, mutta jatkamalla käskyä tauon sijasta, ei lopeta silmukan suorittamista. Se ohittaa vain nykyisen iteraation.
3) Pass
Pass-avainsana on mielenkiintoinen Pythonissa. Se tarkoittaa yksinkertaisesti tekemättä mitään. Sitä käytetään, kun koodilohkoa tarvitaan syntaktisesti, mutta et halua minkään komennon suorittamista. Se toimii vain paikkamerkkinä.
esimerkki
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('')
lähtö:
johtopäätös
Silmukat ovat strategisesti erittäin tärkeitä oppia suorittamaan tehtävää pienillä koodirivillä. Tämä on vain johdanto silmukoihin. On suositeltavaa pelata enemmän, olla luovia ja tutkia silmukoiden potentiaalia edelleen.
Suositellut artikkelit
Tämä on opas Pythonin sisäkkäisiin silmukoihin. Tässä keskustellaan Python-sisäkkäisistä silmukoista syntaksin, esimerkkien, lähtö- ja toteutusvirtauksen kanssa. Voit myös tarkastella seuraavaa artikkelia saadaksesi lisätietoja -
- Python-kehykset
- Kuinka asentaa Python
- Opas silmukoihin Pythonissa
- Mikä on Java-käyttöliittymä?
- Erityyppiset silmukat ja sen edut
- Silmukoita VBScript-ohjelmassa esimerkkien kanssa