samas tsükkel Pythonis. Kuidas see toimib, kasutusnäited

Silmused on mis tahes keele üks peamisi tööriistu. Pythonis on kaks põhitsüklit, millest üks on while. Mõelge sellele ja pildi paremaks mõistmiseks veel üks. Tõepoolest, võrreldes millegi sarnasega on igast materjalist palju lihtsam aru saada, kas pole?

Tsükli mõiste

Silmust on vaja siis, kui teatud toimingut on vaja teha mitu korda. See on väga lihtsustatud, sest tegelikkuses on tsiklite rakenduste valik palju laiem. Pythonis on kahte peamist tüüpi silmuseid: for ja while. Kõige populaarsem on mõeldud.

Lisaks konkreetsetele toimingutele saate teatud punktini silmuseid luua erinevaid koodilõike. Seda võib teha teatud arv kordi või seni, kuni konkreetne tingimus on tõsi.

Enne kui hakkame mõistma silmuste tüüpe ja eriti, peame siiski mõistma, mis on iteratsioon. See on toimingu või toimingute jada kordus praeguse tsükli jooksul praeguse rakenduse jooksva töö käigus.

Tsükli jaoks

Meie For-silmus ei ole loendur, nagu paljudes teistes keeltes. Selle ülesanne on loetleda teatud väärtuste jada. Mida see tähendab? Oletame, et meil on elementide loend. Esiteks võtab silmus esimese, teise, kolmanda jne.

Selle Pythonis oleva tsükli eeliseks on see, et te ei pea määrama elemendi indeksit, et teada saada, millal tsüklist väljuda. Kõik tehakse automaatselt.

>>> spisok = [10, 40, 20, 30]

>>> spisoki elemendi jaoks:

… print(element + 2)

...

12

42

22

32

Meie näites kasutasime muutujat element pärast käsku for. Üldiselt võib nimi olla ükskõik milline. Näiteks populaarne nimetus on i. Ja iga iteratsiooniga määratakse sellele muutujale loendist konkreetne objekt, mida me nimetasime sobivaks sõnaks.

Meie puhul on loend numbrite jada 10,40,20,30. Igal iteratsioonil kuvatakse muutujas vastav väärtus. Näiteks niipea, kui tsükkel algab, muutub muutuja element väärtus 10 on määratud. Järgmisel iteratsioonil muutub kümme arvuks 40, kolmandal korral arvuks 20 ja lõpuks, tsükli viimasel iteratsioonil, muutub see 30-ks.

Tsükli lõpu signaal on loendis olevate elementide lõpp.

Kui vajate tsüklit väärtuste klassikalise loendamiseks, nagu teisteski programmeerimiskeeltes, peaksite looma loendi naturaalarvude jadaga kuni meile vajaliku väärtuseni.

>>> spisok = [1,2,3,4,5]

Või kasutage funktsiooni len (), nimekirja pikkuse määramiseks. Kuid sel juhul on parem kasutada silmust samal ajal, sest muutujat pole vaja kasutada.

Kui peate loendis väärtuste järjestust muutma, tehke silmus eest ja siin tuleb appi. Selleks tuleb igal iteratsioonil igale loendi elemendile määrata sobiv väärtus.

Kuigi Loop

Erinevalt tsüklist eest, mis lihtsalt kordab jada, tsükli väärtusi kuigi on rohkem kasutust. Seda tüüpi tsüklite nimi on tõlgitud kui "veel". See tähendab "kuni".

See on universaalne tsükkel, mida leidub kõigis programmeerimiskeeltes. Ja mõnes mõttes sarnaneb see tingimusliku operaatoriga jugapuu, mis kontrollib, kas teatud tingimus on täidetud. Ainult erinevalt tingimuslikust operaatorist kuigi teostab kontrolli iga iteratsiooni ajal, mitte ainult üks kord. Ja ainult siis, kui tingimus on väär, tsükkel lõpeb ja sellele järgnev käsk täidetakse. Lihtsamalt öeldes, kui olukord, milles ta töötab, enam ei kehti.

Kui joonistame tsükli kuigi lihtsustatult tehakse seda sellise skeemi abil.samas tsükkel Pythonis. Kuidas see toimib, kasutusnäited

Programmi põhiharu (mis jookseb väljaspool tsüklit) on sellel joonisel kujutatud siniste ristkülikutega. Türkiis tähistab tsükli keha. Romb on omakorda tingimus, mida kontrollitakse igal iteratsioonil.

Tsükkel kuigi võib põhjustada kaks erandit:

  1. Kui tsükli alguses ei tagasta loogiline avaldis tõest, siis see lihtsalt ei alga, kuna see on enne täitmist lõpetatud. Üldiselt on see olukord normaalne, sest teatud tingimustel ei pruugi rakendus näha ette avaldiste olemasolu tsükli kehas.
  2. Kui avaldis on alati tõene, võib see viia tsüklini. Ehk siis tsükli lõputu kerimiseni. Seetõttu peaks sellistes programmides alati olema tsüklist või programmist väljumislause. Selline olukord tekib aga siis, kui programm suutis kindlaks teha konkreetse tingimuse tõesuse või vääruse. Kui ta seda ei teinud, tagastatakse programmi lõpetamisel tõrge. Või saate veaga hakkama ja siis käivitatakse selle ilmnemisel teatud kood.

Vea käsitlemiseks võib olla tohutult palju võimalusi. Näiteks võib programm paluda kasutajal andmed õigesti sisestada. Seega, kui inimene märkis negatiivse numbri, kus see võib olla ainult positiivne, või sisestas tähed, kus peaksid olema ainult numbrid, saab programm sellest teada.

Kuigi Loop Näited

Siin on näide koodist, mis käsitleb antud juhul viga.

n = sisend ("Sisestage täisarv: ") 

while type(n) != int:

    proovida:

        n = int(n)

    välja arvatud ValueError:

        print ("Vale sisestus!")

        n = sisend ("Sisestage täisarv: ") 

kui n % 2 == 0:

    print ("Isegi")

muu:

    print ("paaritu")

Pidage meeles, et Python kasutab keerukate koodikonstruktsioonide deklareerimiseks kooloneid.

Ülaltoodud koodis määratlesime tingimusena, et peaksime kontrollima, kas arv on täisarv. Kui jah, tagastatakse vale. Kui ei, siis tõsi.

Koodi teises osas, kus kasutatakse operaatorit if, kasutasime jagamisoperatsiooni järel jäägi leidmiseks operaatorit %. Järgmine samm on kontrollida, kas arv on paaris. Kui ei, siis ülejäänud osa on antud juhul üks. Sellest lähtuvalt on arv paaritu. 

Lihtsamalt öeldes kontrollib ülaltoodud kood kõigepealt, kas kasutaja sisestatud string on arv. Kui jah, siis tehakse teine ​​kontroll, et näha, kas kahega jagamisest on järele jäänud. Kuid teist plokki ei käivitata enne, kui kasutaja sisestatud väärtus on numbriline.

See tähendab, et tsüklit täidetakse regulaarselt, kuni tingimus saabub. Selles olukorras toimib see nii. 

See tähendab, et võite minna vastupidiselt: korrata teatud toimingut, kuni sündmus muutub valeks.

Koodi sõelumine

Nüüd vaatame üksikasjalikumalt, kuidas see kood töötab. Selleks analüüsime seda samm-sammult.

  1. Esiteks sisestab kasutaja stringi, mille võtab vastu muutuja n. 
  2. Silmuse kasutamine kuigi kontrollitakse selle muutuja tüüpi. Esimesel sissekandel pole see võrdne int. Seetõttu leitakse testi tulemusena, et see tingimus vastab tõele. Seetõttu sisestatakse silmuse keha.
  3. Operaatori abiga püüdma püüame teisendada stringi arvuks. Kui see on tehtud, siis viga ei teki. Sellest tulenevalt ei ole vaja seda töödelda. Seetõttu naaseb tõlk tsükli algusesse ja kontrolli tulemuste põhjal selgub, et sellest on saanud täisarv. Liigume siis 7. sammu juurde
  4. Kui teisendamine ebaõnnestus, kuvatakse ValueError. Sel juhul saadetakse programmivoog va töötlejale.
  5. Kasutaja sisestab uue väärtuse, mis omistatakse muutujale n.
  6. Tõlk naaseb 2. sammu juurde ja kontrollib uuesti. Kui see on täisarv, jätkake sammuga 7. Kui ei, siis proovitakse teisendada uuesti vastavalt 3. sammule.
  7. Operaatori abiga if Määrab, kas pärast arvu jagamist 2-ga on jääk. 
  8. Kui ei, tagastatakse tekst "paaris".
  9. Kui ei, tagastatakse tekst "paar".

Mõelge nüüd sellisele näitele. Proovige kindlaks teha, mitu korda see tsükkel läbib?

kokku = 100 

i = 0

kui ma <5:

    n = int(sisend())

    kokku = kokku — n

    i = i + 1 

print ("jäänud", kokku)

Õige vastus on 5. Esialgu muutuja väärtus i - null. Tõlk kontrollib, kas muutuja on võrdne i 4 või vähem. Kui jah, siis väärtus tagastatakse. tõsi, ja tsükkel käivitatakse vastavalt. Väärtust suurendatakse ühe võrra.

Pärast esimest iteratsiooni muutub muutuja väärtuseks 1. Teostatakse kontroll ja programm saab aru, et see arv on jälle väiksem kui 5. Vastavalt sellele käivitatakse tsükli keha teist korda. Kuna sammud on sarnased, suurendatakse väärtust ka ühe võrra ja muutuja on nüüd võrdne 2-ga.

See väärtus on samuti väiksem kui viis. Seejärel käivitatakse tsükkel kolmandat korda, lisades muutujale i 1 ja sellele omistatakse väärtus 3. See on jällegi väiksem kui viis. Ja nii jõuame tsükli kuuenda iteratsioonini, kus muutuja väärtus i võrdub 5-ga (meie mäletamist mööda oli see ju algselt null). Sellest tulenevalt ei läbi see tingimus testi ja tsükkel lõpetatakse automaatselt ja toimub üleminek järgmisele sammule, mis on sellest väljaspool (või programmi lõpetamine, kui järgmisi samme pole ette nähtud).

Tsükkel võib toimuda ka vastupidises suunas. Siin on näide koodist, kus iga järgneva iteratsiooniga lahutatakse muutuja praegusest väärtusest üks. 

kokku = 100 

samas kui kokku > 0:

    n = int(sisend())

    kokku = kokku — n 

print ("Ressurss on otsas")

Proovige arvata, mida see programm teeb! Kujutage ette seda muutujas summaarne salvestatakse teave programmi ressursi kohta. Iga kord kontrollib tõlk, kas ressurss on olemas. Kui ei, siis kuvatakse tekst “Ressurss otsas” ja programm sulgub. Ja iga tsükli iteratsiooniga väheneb ressurss kasutaja määratud arvu võrra.

Ja nüüd kodutöö. Proovige ülaltoodud koodi muuta, et muutuja ei saaks füüsiliselt negatiivseks. 

4 Kommentaarid

  1. si kood ahaan usoo gudbi

Jäta vastus