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 -

  1. Python-kehykset
  2. Kuinka asentaa Python
  3. Opas silmukoihin Pythonissa
  4. Mikä on Java-käyttöliittymä?
  5. Erityyppiset silmukat ja sen edut
  6. Silmukoita VBScript-ohjelmassa esimerkkien kanssa