En jevn forfriskning på Pythons løkker

Jeg håper du har det bra med Pythons glatte forfriskerserie. La meg raskt minne deg på at formålet med denne serien er å lære deg på en jevn måte de viktigste konseptene du trenger å forstå for å kunne bevege deg videre i Python-læringsreisen.

Husker du den dagen da du måtte vann 10 blomster? Eller når du måtte fylle 20 kopper vann? Du gjorde samme oppgave på hver blomst eller kopp vann. En slik gjentagelse kalles looping i programmering. 

For å gi en følelse av viktigheten av looping, si at du skrev et program som skulle skrive ut samme utsagn 100.000 ganger. Vil du tørre gjenta denne uttalelsen 100.000 ganger, manuelt ?! Jeg vil ikke, og jeg tror du ikke vil også. Jeg er sikker på at du har mye viktigere ting å gjøre. Her kommer dermed skjønnheten til looping.

Uten ytterligere ado, la oss se Python-løsningen.

Mens Loop

I denne typen iterasjon, så lenge som test vurderer til ekte, uttalelsen eller blokkene med uttalelser fortsetter å utføre. Således holder kontrollen looping tilbake til begynnelsen av setningen (dvs. test), og vil håndtere kontroll til neste setning (er) hvis testen vurderes til falsk. Hvis testen alltid vurderer til sant, er i dette tilfellet det vi har en uendelig sløyfe.

Den generelle syntaksen for stundoppgaven er veldig enkel, og ser slik ut:

mens test: # loop test uttalelser # loop body

Husk den uendelige loop termen jeg nevnte for en stund siden? Det vil si, sløyfen som aldri stopper siden testen er alltid sant? La oss se et eksempel på en slik loop:

mens 1: skriv ut 'Jeg er en uendelig sløyfe. Ctrl-C for å stoppe meg! '

Verdien 1 er en annen form for den boolske verdien ekte. Dermed, hvis du skriver mens sant, Dette vil tilsvare forklaringen i eksemplet. Som du vil legge merke til, vil du fortsette å få utskriftsreklamer som vises uendelig. 

For å avslutte sløyfen klikker du bare på Kontroll-C på tastaturet ditt. Figuren under viser hvordan programmet kjørte uendelig og ble avbrutt av tastaturet (dvs. Control-C).

La oss nå vann våre 10 vakre blomster med Python. Dette kan gjøres på følgende måte:

blomster = 1 mens blomster <= 10: print 'Water the flower # ' + str(flowers) flowers = flowers + 1 

Resultatet av programmet kan vises i følgende figur:

Før du går videre, la meg klargjøre noen punkter i det ovennevnte Python-skriptet. Du lurer kanskje på hva str () er og hvorfor vi har brukt den her. Basert på dokumentasjonen:

Returner en streng som inneholder en pent utskrivbar representasjon av et objekt. For strenger returnerer dette strengen selv. Forskjellen med repr (objekt) er det str (objekt) forsøker ikke alltid å returnere en streng som er akseptabelt eval (); Målet er å returnere en utskrivbar streng. Hvis det ikke gis noe argument, returnerer du den tomme strengen, ".

Med andre ord, str () vil returnere en utskriftsbar strengrepresentasjon av objektet. Men hvorfor? La oss se hva Python ville klage om vi ikke brukte det str ():

Traceback (siste samtalen sist): Fil "test.py", linje 3, i  skriv ut 'Vann blomsten #' + blomster TypeError: kan ikke sammenkoble 'str' og 'int' objekter

Så problemet er at a str kan ikke sammenkobles med int

Det andre poenget jeg vil nevne er bruken av blomster = blomster + 1. Hvis vi ikke brukte en slik utsagn, ville vi ha en uendelig sløyfe hvor verdien av blomster ville forbli 1, og dermed alltid mindre enn 10 (alltid sant).

For Loop

De for-løkke er en iterasjon som går gjennom elementene i en bestilt sekvens for eksempel lister, ordbøkens nøkler, tuples, strenger osv.

Pythonen for-løkke syntaks ser ut som følger:

for var i rekkefølge: setning (er)

Hvor Var vil holde elementene i sekvensen (dvs. liste, tuple) at for-løkke vil bli iterating gjennom, slik at for-løkke kroppen vil bli utført for hvert element i sekvensen.

Tid for noen eksempler på for-løkke!

languages ​​= ['Arabic', 'English', 'French', 'Spanish'] counter = 0 for lang på språk: print 'Dette språket er i listen:' + languages ​​[counter] counter = counter + 1

Hva skjer hvis vi initialiserer teller = 1? I dette tilfellet vil du få feilen vist nedenfor siden på et tidspunkt i løkken vil indeksen være utenfor listen:

Traceback (siste samtale siste): File "test.py", linje 4, i  skriv ut 'Dette språket er i listen:' + språk [teller] IndexError: listeindeks utenfor rekkevidde

En liten quiz. Hva er resultatet av følgende sløyfe? (hint: Husk at Python begynner å telle fra 0):

for x i rekkevidde (1,5): print x 

Uttalelser brukt i mens og for looper

Underseksjonene nedenfor viser noen utsagn som ofte brukes i looper.

gå i stykker

Uttalelsen gå i stykker forårsaker sløyfen å avslutte, og programkjøring fortsetter i neste setning.

Et eksempel på bruk av gå i stykker er vist nedenfor. Det viser hvordan programmet avslutter (gå i stykker) sløyfen når if-statement evaluerer til ekte.

tall = [1,2,3,4,5,6,7,8,9,10] verdi = 1 mens verdi i tall: hvis verdi == 5: break print 'I \' m # '+ str ) verdi = verdi + 1 print 'Beklager, jeg måtte avslutte sløyfen når verdien ble 5'

Fortsette

Denne setningen returnerer kontrollen tilbake til begynnelsen av løkken, og ignorerer eventuelle setninger i løkken som kommer etterpå. La oss se følgende eksempel:

tall = [1,2,3,4,5,6,7,8,9,10] verdi = 1 mens verdi i tall: hvis verdi < 5: print 'I\'m # ' + str(value) value = value + 1 continue print 'I\'m in the if-condition, why are you ignoring me?!' elif value == 5: break print ('I have reached the last statement in the program and need to exit') 

Fikk du ut hvordan Fortsette virker? Hva tror du at produksjonen av dette Python-skriptet ville være? Fortsett, prøv det.

passere

Denne utsagnet er litt vanskelig. De passere erklæringen er a null uttalelse, det er det ikke gjør noe. Men, hvorfor bruker vi det? Anta at du skrev et program, og på et tidspunkt var du ikke sikker på hva som skulle gå i for-statement for eksempel, som følger:

tall = [1,2,3,4,5,6,7,8,9,10] verdi = 1 for verdi i tall: # ikke sikker på hva du skal gjøre her, men skriv ut ('Jeg har nådd siste setningen i program og må avslutte ') 

Hvis du prøver å kjøre programmet, får du følgende feil:

Fil "test.py", linje 6 utskrift ('Jeg har nådd den siste setningen i programmet og må avslutte') ^ IndentationError: forventet en innrykket blokk

Så Python klager på at det skulle være noe utsagn som går inn i for-løkke. Hvis du skriver inn passere i for-løkke, utgangen av programmet vil være:

Jeg har nådd den siste setningen i programmet og må avslutte

Herfra kan vi konkludere med det passere Fungerer som plassholder for å tillate at programmet kjører selv om du ikke har bestemt deg for hva som er påkrevd (er) som skal gå i et eller annet sted av koden.

ellers

De ellers erklæring er selvforklarende, og vil bare inneholde en blokk med setninger som skal løpe når sløyfen går ut på en vanlig måte, og ikke av en gå i stykker. Et eksempel på bruken er som følger:

tall = [1,2,3] verdi = 1 mens verdi i tall: skriv ut 'Jeg \' m # '+ str (verdi) verdi = verdi + 1 annet: skriv ut' Jeg er en del av den andre setningsblokken ' skriv ut 'Jeg er også en del av den andre setningen blokk' 

Konklusjon

For å konkludere denne artikkelen og for å forestille seg betydningen av looping, husker jeg da jeg måtte utføre disse analysene på hver piksel av et bilde. 

Gjør dette på et bilde med størrelse 256x256 betyr bare at jeg måtte gjenta operasjonen 65.536 ganger (som er antall piksler)! Looping til redning!