terwyl lus in Python. Hoe dit werk, voorbeelde van gebruik

Lusse is een van die hoofinstrumente van enige taal. Daar is twee basiese lusse in Python, waarvan een is while. Oorweeg dit, en ook vir 'n beter begrip van die prentjie, nog een. Inderdaad, in vergelyking met iets soortgelyks, is dit baie makliker om enige materiaal te verstaan, is dit nie?

Die konsep van 'n siklus

'n Lus is nodig wanneer 'n sekere aksie verskeie kere uitgevoer moet word. Dit is baie simplisties, want in werklikheid is die reeks toepassings vir siklusse baie wyer. Daar is twee hooftipes lusse in Python: vir en terwyl. Die gewildste is vir.

Benewens spesifieke aksies, kan jy verskillende stukke kode tot op 'n sekere punt lus. Dit kan 'n sekere aantal kere wees, of solank 'n spesifieke toestand waar is.

Voordat ons begin om die tipe lusse te verstaan ​​en veral terwyl, moet ons nog verstaan ​​wat iterasie is. Dit is een herhaling van 'n aksie of volgorde van aksies gedurende die huidige siklus binne die huidige toepassingsloop.

Fiets vir

Ons For-lus is nie 'n teller, soos in baie ander tale nie. Sy taak is om 'n sekere volgorde van waardes op te som. Wat beteken dit? Kom ons sê ons het 'n lys van elemente. Eerstens neem die lus die eerste, tweede, derde, ensovoorts.

Die voordeel van hierdie lus in Python is dat jy nie die indeks van die element hoef te bepaal om te weet wanneer om die lus te verlaat nie. Alles sal outomaties gedoen word.

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

>>> vir element in spisok:

… druk (element + 2)

...

12

42

22

32

In ons voorbeeld het ons die veranderlike gebruik element na die vir bevel. Oor die algemeen kan die naam enigiets wees. Byvoorbeeld, 'n gewilde benaming is i. En met elke iterasie sal hierdie veranderlike 'n spesifieke voorwerp uit die lys toegeken word, wat ons die toepaslike woord genoem het.

In ons geval is die lys 'n ry van getalle 10,40,20,30. By elke iterasie verskyn die ooreenstemmende waarde in die veranderlike. Byvoorbeeld, sodra die lus begin, die veranderlike element die waarde 10 word toegeken. Op die volgende iterasie verander die tien in die getal 40, die derde keer verander dit in die getal 20, en uiteindelik, op die laaste iterasie van die lus, verander dit in 30.

Die sein vir die einde van die siklus is die einde van die elemente in die lys.

As jy die lus nodig het om 'n klassieke opsomming van waardes uit te voer, soos in ander programmeertale, moet jy 'n lys skep met 'n reeks natuurlike getalle tot die waarde wat ons benodig.

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

Of gebruik die funksie len(), om die lengte van die lys te bepaal. Maar in hierdie geval is dit beter om 'n lus te gebruik terwyl, want dit is nie nodig om 'n veranderlike te gebruik nie.

As jy die volgorde van waardes in die lys moet verander, lus vir en hier kom tot die redding. Om dit te doen, by elke iterasie, moet elke element van die lys 'n toepaslike waarde toegeken word.

Terwyl Loop

Anders as die siklus vir, wat eenvoudig oor die waardes van die ry herhaal, die lus terwyl het meer gebruike. Die naam van hierdie tipe siklusse word as "nog" vertaal. Dit wil sê, "tot".

Dit is 'n universele lus wat in alle programmeertale gevind word. En in sekere opsigte lyk dit soos 'n voorwaardelike operateur taxus, wat 'n kontrole doen om te sien of 'n sekere voorwaarde nagekom word. Slegs in teenstelling met die voorwaardelike operateur, terwyl voer die kontrole by elke iterasie uit, nie net een keer nie. En slegs as die voorwaarde vals is, eindig die lus en die opdrag wat daarop volg, word uitgevoer. In eenvoudige woorde, as die situasie waarin hy werk nie meer geldig is nie.

As ons 'n siklus teken terwyl simplisties word dit gedoen met behulp van so 'n skema.terwyl lus in Python. Hoe dit werk, voorbeelde van gebruik

Die hooftak van die program (wat buite die lus loop) word in hierdie figuur met blou reghoeke uitgebeeld. Turkoois verteenwoordig die liggaam van die siklus. Op sy beurt is 'n ruit 'n toestand wat by elke iterasie nagegaan word.

Cycle terwyl kan twee uitsonderings tot gevolg hê:

  1. As die logiese uitdrukking aan die begin van die lus nie waar terugkeer nie, begin dit eenvoudig nie, nadat dit voltooi is voor uitvoering. Oor die algemeen is hierdie situasie normaal, want onder sekere omstandighede mag die aansoek nie voorsiening maak vir die teenwoordigheid van uitdrukkings in die lusliggaam nie.
  2. As die uitdrukking altyd waar is, kan dit tot 'n lus lei. Dit wil sê tot die eindelose blaai van die siklus. Daarom moet daar in sulke programme altyd 'n uitgangstelling van die lus of program wees. Hierdie situasie sal egter ontstaan ​​as die program in staat was om die waarheid of valsheid van 'n bepaalde toestand te bepaal. As sy versuim het om dit te doen, word 'n fout teruggestuur met die beëindiging van die program. Of jy kan die fout hanteer, en dan, as dit voorkom, sal sekere kode uitgevoer word.

Daar kan 'n groot aantal opsies wees vir hoe om 'n fout te hanteer. Byvoorbeeld, die program kan die gebruiker vra om data korrek in te voer. Dus, as 'n persoon 'n negatiewe getal aangedui het waar dit net positief kan wees, of letters ingevoer het waar slegs syfers moet wees, kan die program daarvan vertel.

Terwyl Loop Voorbeelde

Hier is 'n voorbeeld van kode wat 'n fout in hierdie geval hanteer.

n = invoer(“Voer 'n heelgetal in: “) 

terwyl tipe(n) != int:

    probeer:

        n = int(n)

    behalwe ValueError:

        druk ("Verkeerde inskrywing!")

        n = invoer(“Voer 'n heelgetal in: “) 

as n % 2 == 0:

    druk ("Ewe")

anders:

    druk ("Oneens")

Hou in gedagte dat Python dubbelpunte gebruik om komplekse kodekonstruksies te verklaar.

In die kode hierbo het ons gedefinieer as 'n voorwaarde dat ons moet kyk of die getal 'n heelgetal is. Indien wel, word vals teruggestuur. Indien nie, dan waar.

In die tweede deel van die kode, waar die operateur gebruik word if, het ons die %-operateur gebruik om die res na die verdelingsbewerking te vind. Die volgende stap is om te kyk of die getal ewe is. Indien nie, dan is die res een in hierdie geval. Gevolglik is die getal vreemd. 

In eenvoudige terme, bogenoemde kode kontroleer eers of die string wat deur die gebruiker ingevoer is 'n nommer is. Indien wel, dan word 'n tweede kontrole gedoen om te sien of daar 'n res van die deling deur twee is. Maar die tweede blok sal nie uitgevoer word totdat die waarde wat deur die gebruiker ingevoer is numeries is nie.

Dit wil sê, die lus sal gereeld uitgevoer word totdat die toestand plaasvind. In hierdie situasie werk dit so. 

Dit wil sê, jy kan van die teenoorgestelde af gaan: lus 'n sekere aksie totdat die gebeurtenis vals word.

Kode-ontleding

Kom ons kyk nou in meer detail hoe hierdie kode werk. Om dit te doen, sal ons dit stap vir stap ontleed.

  1. Eerstens voer die gebruiker 'n string in, wat deur die veranderlike n aanvaar word. 
  2. Met behulp van 'n lus terwyl die tipe van hierdie veranderlike word nagegaan. By die eerste inskrywing is dit nie gelyk nie int. Daarom, as gevolg van die toets, word gevind dat hierdie toestand waar is. Daarom word die lusliggaam ingevoer.
  3. Met die hulp van 'n operateur probeer ons probeer 'n string na 'n getal omskakel. As dit gedoen word, vind geen fout plaas nie. Gevolglik is dit nie nodig om dit te verwerk nie. Daarom keer die tolk terug na die begin van die lus, en volgens die resultate van die tjek, blyk dit dat dit 'n heelgetal geword het. So kom ons gaan na stap 7
  4. As die omskakeling onsuksesvol was, word 'n ValueError gegooi. In hierdie geval word die programvloei na die behalwe hanteerder gestuur.
  5. Die gebruiker voer 'n nuwe waarde in, wat aan die veranderlike n toegeken word.
  6. Die tolk keer terug na stap 2 en kontroleer weer. As dit 'n heelgetalwaarde is, gaan na stap 7. Indien nie, word die omskakeling weer volgens stap 3 probeer.
  7. Met die hulp van 'n operateur if Bepaal of daar 'n oorblyfsel is nadat 'n getal deur 2 gedeel is. 
  8. Indien nie, word die teks "selfs" teruggestuur.
  9. Indien nie, word die teks "vreemd" teruggestuur.

Beskou nou so 'n voorbeeld. Probeer om vas te stel hoeveel keer hierdie siklus sal deurgaan?

totaal = 100 

i = 0

terwyl ek <5:

    n = int(invoer())

    totaal = totaal — n

    i = i + 1 

print(“Resterend”, totaal)

Die korrekte antwoord is 5. Aanvanklik, die waarde van die veranderlike i – nul. Die tolk kyk of die veranderlike gelyk is i 4 of minder. Indien wel, dan word die waarde teruggestuur. waar, en die lus word dienooreenkomstig uitgevoer. Die waarde word met een verhoog.

Na die eerste iterasie word die waarde van die veranderlike 1. 'n Kontrole word uitgevoer, en die program verstaan ​​dat hierdie getal weer minder as 5 is. Gevolglik word die lusliggaam vir die tweede keer uitgevoer. Aangesien die stappe soortgelyk is, word die waarde ook met een verhoog, en die veranderlike is nou gelyk aan 2.

Hierdie waarde is ook minder as vyf. Dan word die lus 'n derde keer uitgevoer, by die veranderlike gevoeg i 1 en dit word die waarde 3 toegeken. Dit is weer minder as vyf. En so kom dit by die sesde iterasie van die lus, waarteen die waarde van die veranderlike i is gelyk aan 5 (dit was immers oorspronklik nul, sover ons onthou). Gevolglik slaag hierdie toestand nie die toets nie, en die lus word outomaties beëindig en die oorgang na die volgende stap, wat daarbuite is (of programbeëindiging, as die volgende stappe nie verskaf word nie), word uitgevoer.

Die siklus kan ook in die teenoorgestelde rigting plaasvind. Hier is 'n voorbeeld van kode waar, met elke daaropvolgende iterasie, een afgetrek word van die huidige waarde van die veranderlike. 

totaal = 100 

terwyl totaal > 0:

    n = int(invoer())

    totaal = totaal — n 

druk ("Hulpbron uitgeput")

Probeer raai wat hierdie program doen! Stel jou dit voor in 'n veranderlike totale inligting oor die programhulpbron word gestoor. Elke keer kyk die tolk of die hulpbron bestaan. Indien nie, dan word die teks "Hulpmiddel uitgeput" vertoon en die program sluit. En met elke iterasie van die lus, verminder die hulpbron met die getal wat die gebruiker spesifiseer.

En nou huiswerk. Probeer om die bogenoemde kode te verander sodat die veranderlike nie fisies negatief kan word nie. 

4 Comments

  1. si kode ahaan usoo gudbi

Lewer Kommentaar