mens loop i Python. Hvordan det virker, eksempler på brug

Loops er et af de vigtigste værktøjer i ethvert sprog. Der er to grundlæggende sløjfer i Python, hvoraf den ene er mens. Overvej det, og også for en bedre forståelse af billedet, en mere. Faktisk, i sammenligning med noget lignende, er det meget nemmere at forstå noget materiale, er det ikke?

Begrebet en cyklus

En løkke er nødvendig, når en bestemt handling skal udføres flere gange. Dette er meget forenklet, fordi anvendelsesområdet for cykler i virkeligheden er meget bredere. Der er to hovedtyper af loops i Python: for og while. Den mest populære er for.

Ud over specifikke handlinger kan du sløjfe forskellige stykker kode op til et bestemt punkt. Dette kan være et vist antal gange, eller så længe en bestemt betingelse er sand.

Før vi begynder at forstå typerne af sløjfer, og i særdeleshed, skal vi stadig forstå, hvad iteration er. Dette er en gentagelse af en handling eller sekvens af handlinger under den aktuelle cyklus i den aktuelle applikationskørsel.

Cykle for

Vores For-løkke er ikke en tæller, som på mange andre sprog. Dens opgave er at opregne en bestemt række af værdier. Hvad betyder det? Lad os sige, at vi har en liste over elementer. For det første tager løkken den første, anden, tredje og så videre.

Fordelen ved denne løkke i Python er, at du ikke behøver at bestemme elementets indeks for at vide, hvornår du skal forlade løkken. Alt vil blive gjort automatisk.

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

>>> for element i spisok:

… print(element + 2)

...

12

42

22

32

I vores eksempel brugte vi variablen element efter kommandoen for. Generelt kan navnet være hvad som helst. For eksempel er en populær betegnelse i. Og med hver iteration vil denne variabel blive tildelt et specifikt objekt fra listen, som vi kaldte det passende ord.

I vores tilfælde er listen en sekvens af tal 10,40,20,30. Ved hver iteration vises den tilsvarende værdi i variablen. For eksempel, så snart loopet starter, variablen element værdien 10 er tildelt. Ved den næste iteration bliver de ti til tallet 40, tredje gang bliver det til tallet 20, og til sidst, ved den sidste iteration af loopet, bliver det til 30.

Signalet for slutningen af ​​cyklussen er slutningen af ​​elementerne i listen.

Hvis du har brug for løkken til at udføre en klassisk opregning af værdier, som i andre programmeringssprog, bør du oprette en liste med en sekvens af naturlige tal op til den værdi, vi har brug for.

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

Eller brug funktionen len(), for at bestemme længden af ​​listen. Men i dette tilfælde er det bedre at bruge en løkke mens, fordi der ikke er behov for at bruge en variabel.

Hvis du har brug for at ændre rækkefølgen af ​​værdier på listen, skal du sløjfe forum og her kommer til undsætning. For at gøre dette skal hvert element på listen ved hver iteration tildeles en passende værdi.

Mens Loop

I modsætning til cyklussen forum, som blot itererer over værdierne af sekvensen, løkken mens har flere anvendelsesmuligheder. Navnet på denne type cyklusser er oversat til "endnu". Det vil sige "indtil".

Dette er en universel sløjfe, der findes på alle programmeringssprog. Og på nogle måder ligner det en betinget operatør taks, som udfører en kontrol for at se, om en bestemt betingelse er opfyldt. Kun i modsætning til den betingede operatør, mens udfører kontrollen ved hver iteration, ikke kun én gang. Og kun hvis betingelsen er falsk, slutter løkken, og den efterfølgende kommando udføres. Med enkle ord, hvis den situation, han arbejder i, ikke længere er gyldig.

Hvis vi tegner en cyklus mens forenklet, dette gøres ved hjælp af en sådan ordning.mens loop i Python. Hvordan det virker, eksempler på brug

Hovedgrenen af ​​programmet (som løber uden for løkken) er afbildet i denne figur med blå rektangler. Turkis repræsenterer kroppen af ​​cyklussen. Til gengæld er en rombe en tilstand, der kontrolleres ved hver iteration.

Cyklus mens kan resultere i to undtagelser:

  1. Hvis det logiske udtryk i begyndelsen af ​​løkken ikke returnerer sandt, begynder det simpelthen ikke, efter at det er afsluttet før udførelse. Generelt er denne situation normal, fordi applikationen under visse omstændigheder muligvis ikke sørger for tilstedeværelsen af ​​udtryk i løkkelegemet.
  2. Hvis udtrykket altid er sandt, kan dette føre til en løkke. Det vil sige til den endeløse rulning af cyklussen. Derfor bør der i sådanne programmer altid være en exit-erklæring fra løkken eller programmet. Denne situation vil dog opstå, hvis programmet var i stand til at fastslå sandheden eller falskheden af ​​en bestemt tilstand. Hvis hun undlod at gøre dette, returneres en fejl ved afslutningen af ​​programmet. Eller du kan håndtere fejlen, og hvis den opstår, vil en bestemt kode blive udført.

Der kan være et stort antal muligheder for, hvordan man håndterer en fejl. For eksempel kan programmet bede brugeren om at indtaste data korrekt. Så hvis en person angav et negativt tal, hvor det kun kan være positivt, eller indtastede bogstaver, hvor kun tal skulle være, kan programmet fortælle om det.

Mens Loop Eksempler

Her er et eksempel på kode, der håndterer en fejl i dette tilfælde.

n = input("Indtast et heltal: ") 

mens type(n) != int:

    Prøv evt.

        n = int(n)

    undtagen ValueError:

        print ("Forkert indtastning!")

        n = input("Indtast et heltal: ") 

hvis n % 2 == 0:

    print ("Lige")

andet:

    print ("Ulige")

Husk, at Python bruger koloner til at erklære komplekse kodekonstruktioner.

I koden ovenfor definerede vi som en betingelse, at vi skulle tjekke, om tallet er et heltal. Hvis ja, returneres false. Hvis ikke, så sandt.

I anden del af koden, hvor operatøren bruges if, brugte vi %-operatoren til at finde resten efter divisionsoperationen. Det næste trin er at kontrollere, om tallet er lige. Hvis ikke, så er resten én i dette tilfælde. Derfor er tallet ulige. 

Enkelt sagt kontrollerer ovenstående kode først, om den streng, som brugeren har indtastet, er et tal. Hvis ja, så foretages en anden kontrol for at se, om der er en resterende del af divisionen med to. Men den anden blok vil ikke blive udført, før den værdi, som brugeren har indtastet, er numerisk.

Det vil sige, at løkken vil blive udført regelmæssigt, indtil tilstanden opstår. I denne situation fungerer det sådan. 

Det vil sige, du kan gå fra det modsatte: sløjfe en bestemt handling, indtil begivenheden bliver falsk.

Kodeparsing

Lad os nu se mere detaljeret, hvordan denne kode fungerer. For at gøre dette vil vi analysere det trin for trin.

  1. Først indtaster brugeren en streng, som accepteres af variablen n. 
  2. Ved hjælp af en løkke mens typen af ​​denne variabel kontrolleres. Ved første indtastning er det ikke lige int. Som et resultat af testen viser det sig derfor, at denne betingelse er sand. Derfor indtastes løkkelegemet.
  3. Med hjælp fra en operatør prøv vi forsøger at konvertere en streng til et tal. Hvis dette gøres, opstår der ingen fejl. Det er derfor ikke nødvendigt at behandle det. Derfor vender tolken tilbage til begyndelsen af ​​løkken, og ifølge resultaterne af kontrollen viser det sig, at det er blevet til et heltal. Så lad os gå til trin 7
  4. Hvis konverteringen mislykkedes, vises en ValueError. I dette tilfælde sendes programflowet til undtagen-handleren.
  5. Brugeren indtaster en ny værdi, som tildeles variablen n.
  6. Tolken vender tilbage til trin 2 og tjekker igen. Hvis det er en heltalsværdi, skal du gå til trin 7. Hvis ikke, forsøges konverteringen igen i henhold til trin 3.
  7. Med hjælp fra en operatør if Bestemmer, om der er en rest efter at have divideret et tal med 2. 
  8. Hvis ikke, returneres teksten "lige".
  9. Hvis ikke, returneres teksten "ulige".

Overvej nu et sådant eksempel. Prøv at bestemme, hvor mange gange denne cyklus vil gå igennem?

i alt = 100 

i = 0

mens jeg <5:

    n = int(input())

    total = total — n

    i = i + xnumx 

print(“Resterende”, i alt)

Det rigtige svar er 5. Indledningsvis værdien af ​​variablen i – nul. Tolken kontrollerer, om variablen er ens i 4 eller mindre. Hvis ja, returneres værdien. sand, og løkken udføres i overensstemmelse hermed. Værdien øges med én.

Efter den første iteration bliver værdien af ​​variablen 1. En kontrol udføres, og programmet forstår, at dette tal igen er mindre end 5. Følgelig udføres loop-legemet for anden gang. Da trinene er ens, øges værdien også med én, og variablen er nu lig med 2.

Denne værdi er også mindre end fem. Derefter udføres løkken en tredje gang, tilføjet til variablen i 1, og den tildeles værdien 3. Dette er igen mindre end fem. Og så kommer det til den sjette iteration af løkken, hvor værdien af ​​variablen i er lig med 5 (det var jo oprindeligt nul, så vidt vi husker). Følgelig består denne betingelse ikke testen, og sløjfen afsluttes automatisk, og overgangen til det næste trin, som er uden for det (eller programafslutning, hvis de følgende trin ikke er tilvejebragt), udføres.

Cyklussen kan også forekomme i den modsatte retning. Her er et eksempel på kode, hvor man ved hver efterfølgende iteration trækkes fra den aktuelle værdi af variablen. 

i alt = 100 

mens total > 0:

    n = int(input())

    total = total — n 

print(“Resource opbrugt”)

Prøv at gætte, hvad dette program gør! Forestil dig det i en variabel alt oplysninger om programressourcen gemmes. Hver gang tjekker tolken, om ressourcen findes. Hvis ikke, så vises teksten "Resource opbrugt", og programmet lukker. Og med hver iteration af løkken falder ressourcen med det tal, som brugeren angiver.

Og nu lektier. Prøv at ændre ovenstående kode, så variablen ikke fysisk kan blive negativ. 

4 Kommentarer

  1. si kode ahaan usoo gudbi

Giv en kommentar