while petlja u Pythonu. Kako radi, primjeri korištenja

Petlje su jedan od glavnih alata svakog jezika. U Pythonu postoje dvije osnovne petlje, od kojih je jedna while. Razmotrite ga, a također za bolje razumijevanje slike, još jedan. Doista, u usporedbi s nečim sličnim, puno je lakše razumjeti bilo koji materijal, zar ne?

Pojam ciklusa

Petlja je potrebna kada se određena akcija mora izvršiti više puta. Ovo je vrlo jednostavno, jer je u stvarnosti raspon primjena ciklusa mnogo širi. U Pythonu postoje dvije glavne vrste petlji: for i while. Najpopularniji je za.

Osim specifičnih radnji, možete ponavljati različite dijelove koda do određene točke. To može biti određeni broj puta ili sve dok je određeni uvjet istinit.

Prije nego što počnemo razumijevati vrste petlji i while, posebno, još uvijek moramo razumjeti što je iteracija. Ovo je jedno ponavljanje radnje ili niza radnji tijekom trenutnog ciklusa unutar trenutnog pokretanja aplikacije.

Ciklus za

Naša For petlja nije brojač, kao u mnogim drugim jezicima. Njegov zadatak je nabrojati određeni niz vrijednosti. Što to znači? Recimo da imamo popis elemenata. Prvo, petlja uzima prvi, drugi, treći i tako dalje.

Prednost ove petlje u Pythonu je ta što ne morate odrediti indeks elementa da biste znali kada izaći iz petlje. Sve će biti učinjeno automatski.

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

>>> za element u spisku:

… ispis(element + 2)

...

12

42

22

32

U našem primjeru koristili smo varijablu element nakon naredbe for. Općenito, ime može biti bilo koje. Na primjer, popularna oznaka je i. I sa svakom iteracijom, ovoj varijabli će biti dodijeljen određeni objekt s popisa, koji smo nazvali odgovarajućom riječi.

U našem slučaju, lista je niz brojeva 10,40,20,30. U svakoj se iteraciji odgovarajuća vrijednost pojavljuje u varijabli. Na primjer, čim započne petlja, varijabla element dodijeljena je vrijednost 10. U sljedećoj iteraciji, deset se pretvara u broj 40, treći put se pretvara u broj 20, i konačno, u zadnjoj iteraciji petlje, pretvara se u 30.

Signal za kraj ciklusa je kraj elemenata u listi.

Ako vam je potrebna petlja za klasično nabrajanje vrijednosti, kao u drugim programskim jezicima, trebali biste napraviti popis s nizom prirodnih brojeva do vrijednosti koja nam je potrebna.

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

Ili upotrijebite funkciju len(), kako bi se odredila duljina popisa. Ali u ovom slučaju bolje je koristiti petlju dok, jer nema potrebe za korištenjem varijable.

Ako trebate promijeniti slijed vrijednosti na popisu, petlja za i tu dolazi u pomoć. Da biste to učinili, u svakoj iteraciji, svakom elementu liste mora biti dodijeljena odgovarajuća vrijednost.

Dok petlja

Za razliku od ciklusa za, koji jednostavno ponavlja vrijednosti niza, petlje dok ima više koristi. Naziv ove vrste ciklusa prevodi se kao "još". Odnosno, "do".

Ovo je univerzalna petlja koja se nalazi u svim programskim jezicima. I na neki način podsjeća na uvjetni operator tisa, koji vrši provjeru da li je određeni uvjet ispunjen. Samo za razliku od uvjetnog operatora, dok provodi provjeru pri svakoj iteraciji, a ne samo jednom. I samo ako je uvjet lažan, petlja završava i izvršava se naredba koja je slijedi. Jednostavnim riječima, ako situacija u kojoj radi više ne vrijedi.

Ako nacrtamo ciklus dok pojednostavljeno, to se radi pomoću takve sheme.while petlja u Pythonu. Kako radi, primjeri korištenja

Glavna grana programa (koja se izvodi izvan petlje) prikazana je na ovoj slici plavim pravokutnicima. Tirkizna boja predstavlja tijelo ciklusa. S druge strane, romb je uvjet koji se provjerava pri svakoj iteraciji.

Ciklus dok može dovesti do dvije iznimke:

  1. Ako na početku petlje logički izraz ne vrati istinito, tada jednostavno ne počinje, nakon što je završio prije izvršenja. Općenito, ova je situacija normalna jer pod određenim okolnostima aplikacija možda neće osigurati prisutnost izraza u tijelu petlje.
  2. Ako je izraz uvijek istinit, to može dovesti do petlje. Odnosno, na beskonačno listanje ciklusa. Stoga u takvim programima uvijek treba postojati izlazna naredba iz petlje ili programa. Međutim, do ove situacije će doći ako je program uspio utvrditi istinitost ili netočnost određenog uvjeta. Ako to nije učinila, vraća se pogreška s prekidom programa. Ili možete riješiti pogrešku, a zatim, ako se dogodi, određeni kod će se izvršiti.

Može postojati ogroman broj opcija za rješavanje pogreške. Na primjer, program može tražiti od korisnika da ispravno unese podatke. Dakle, ako je osoba označila negativan broj tamo gdje može biti samo pozitivan ili je unijela slova tamo gdje bi trebali biti samo brojevi, program to može reći.

Primjeri while petlje

Ovdje je primjer koda koji rješava pogrešku u ovom slučaju.

n = input(“Unesite cijeli broj: “) 

dok tip(n) != int:

    pokušajte:

        n = int(n)

    osim ValueError:

        print(“Pogrešan unos!”)

        n = input(“Unesite cijeli broj: “) 

ako je n % 2 == 0:

    ispis ("Ravan")

drugo:

    ispis (“nepar”)

Imajte na umu da Python koristi dvotočke za deklariranje složenih konstrukcija koda.

U gornjem kodu definirali smo kao uvjet da bismo trebali provjeriti je li broj cijeli broj. Ako da, tada se vraća false. Ako ne, onda istina.

U drugom dijelu koda, gdje se koristi operator if, koristili smo operator % za pronalaženje ostatka nakon operacije dijeljenja. Sljedeći korak je provjeriti je li broj paran. Ako nije, onda je ostatak u ovom slučaju jedan. Sukladno tome, broj je neparan. 

Jednostavno rečeno, gornji kod prvo provjerava je li niz koji je unio korisnik broj. Ako da, onda se vrši druga provjera da se vidi postoji li ostatak dijeljenja s dva. Ali drugi blok se neće izvršiti sve dok vrijednost koju je unio korisnik nije numerička.

Odnosno, petlja će se redovito izvršavati dok se uvjet ne dogodi. U ovoj situaciji to funkcionira ovako. 

To jest, možete ići od suprotnog: ponavljajte određenu radnju dok događaj ne postane lažan.

Raščlanjivanje koda

Pogledajmo sada detaljnije kako ovaj kod radi. Da bismo to učinili, analizirat ćemo korak po korak.

  1. Prvo, korisnik unosi niz, koji prihvaća varijabla n. 
  2. Korištenje petlje dok provjerava se tip ove varijable. Pri prvom unosu nije jednako int. Stoga je kao rezultat testa utvrđeno da je ovaj uvjet istinit. Stoga se unosi tijelo petlje.
  3. Uz pomoć operatera pokušati pokušavamo pretvoriti niz u broj. Ako se to učini, ne dolazi do pogreške. Sukladno tome, nema potrebe za njegovom obradom. Stoga se tumač vraća na početak petlje, a prema rezultatima provjere ispada da je postao cijeli broj. Dakle, idemo na korak 7
  4. Ako je konverzija bila neuspješna, izbacuje se ValueError. U ovom slučaju, tijek programa šalje se rukovatelju osim.
  5. Korisnik unosi novu vrijednost koja se dodjeljuje varijabli n.
  6. Tumač se vraća na korak 2 i ponovno provjerava. Ako je to cjelobrojna vrijednost, idite na korak 7. Ako nije, pretvorba se pokušava ponovno izvršiti prema koraku 3.
  7. Uz pomoć operatera if Određuje postoji li ostatak nakon dijeljenja broja s 2. 
  8. Ako nije, vraća se tekst "čak".
  9. Ako nije, vraća se tekst "odd".

Razmotrite sada takav primjer. Pokušajte odrediti koliko će puta ovaj ciklus proći?

ukupno = 100 

i = 0

dok ja <5:

    n = int(ulaz())

    ukupno = ukupno — n

    i = i + 1 

print(“Preostalo”, ukupno)

Točan odgovor je 5. U početku vrijednost varijable i – nula. Interpretator provjerava je li varijabla jednaka i 4 ili manje. Ako da, vrijednost se vraća. istinski, a petlja se izvršava u skladu s tim. Vrijednost se povećava za jedan.

Nakon prve iteracije, vrijednost varijable postaje 1. Izvršava se provjera i program razumije da je taj broj opet manji od 5. Sukladno tome, tijelo petlje se izvodi po drugi put. Budući da su koraci slični, vrijednost je također povećana za jedan, a varijabla je sada jednaka 2.

Ova vrijednost je također manja od pet. Zatim se petlja izvodi treći put, dodaje se varijabli i 1 i dodijeljena mu je vrijednost 3. To je opet manje od pet. I tako dolazi do šeste iteracije petlje, u kojoj vrijednost varijable i jednako 5 (uostalom, izvorno je bila nula, koliko se sjećamo). Sukladno tome, ovaj uvjet ne prolazi test, te se petlja automatski prekida i provodi se prijelaz na sljedeći korak koji je izvan nje (ili prekid programa, ako sljedeći koraci nisu predviđeni).

Ciklus se može dogoditi i u suprotnom smjeru. Ovdje je primjer koda gdje se, sa svakim sljedećim ponavljanjem, jedan oduzima od trenutne vrijednosti varijable. 

ukupno = 100 

dok je ukupno > 0:

    n = int(ulaz())

    ukupno = ukupno — n 

print(“Resurs iscrpljen”)

Pokušajte pogoditi što ovaj program radi! Zamislite to u varijabli ukupan pohranjuju se informacije o programskom resursu. Svaki put prevoditelj provjerava postoji li izvor. Ako nije, tada se prikazuje tekst "Resurs exhausted" i program se zatvara. I sa svakim ponavljanjem petlje, resurs se smanjuje za broj koji odredi korisnik.

A sada zadaća. Pokušajte promijeniti gornji kod tako da varijabla fizički ne može postati negativna. 

4 Komentari

  1. si code ahaan usoo gudbi

Ostavi odgovor