I denne opplæringen lærer du hvordan du emulerer en do-while-løkke i Python.
I et hvilket som helst programmeringsspråk hjelper loops deg med å utføre visse handlinger gjentatte ganger, avhengig av en looping-tilstand. Python støtter while og for loop-konstruksjoner, men støtter ikke do-while-løkken.
Du kan imidlertid etterligne en do-while-løkke ved å forstå hvordan den fungerer – ved å bruke eksisterende looper og loop-kontrollsetninger i Python.
Du vil lære hvordan du gjør dette i løpet av de neste minuttene. La oss begynne!
Innholdsfortegnelse
Hva er Do-While Loop-konstruksjonen?
Hvis du har programmert i språk som C eller C++, ville du sannsynligvis ha kommet over do-while loop-konstruksjonen.
I en do-while-løkke, utføres settet med setninger i loop-kroppen – innenfor blokken avgrenset av krøllete klammer – først, og deretter kontrolleres looping-betingelsen.
Du kan kjøre følgende C-eksempler i tipsbilk.net sin online C-kompilator – rett fra nettleseren din.
Tenk på følgende kodebit:
//do_while_example1 #include <stdio.h> int main() { int count = 1; printf("Do-While loop: n"); do{ printf("Loop runs..."); }while(count<0); return 0; }
Her er utgangen.
Output Do-While loop: Loop runs...
I eksemplet ovenfor:
- Verdien av telling er 1, og sløyfebetingelsen er telling < 0. Løkken kjører imidlertid én gang selv om sløyfebetingelsen i utgangspunktet er False.
- Dette er i motsetning til en while-løkke som bare kjøres hvis looping-betingelsen er True i utgangspunktet.
//while_example1 #include <stdio.h> int main() { int count = 1; printf("While loop: n"); while(count<0){ printf("Loop runs..."); } return 0; }
Som nevnt er looping-betingelsen, count < 0 False, i utgangspunktet initialiseres tellevariabelen til 1. Så når vi kompilerer og kjører koden ovenfor, ser vi at setningen i while loop-kroppen ikke blir utført.
Output While loop: //loop body does not run!
Mens vs Do-While: En oversikt over forskjellene
La oss se nærmere på forskjellene mellom while- og do-while-løkker.
Tenk på dette eksemplet:
//do_while_example2 #include <stdio.h> int main() { int count = 1; printf("Do-while loop: n"); do{ printf("%dn",count); count++; }while(count<5); return 0; }
I kodecellen ovenfor:
- Tellevariabelen initialiseres til 1.
- Vi bruker en do-while-løkke.
- Tellevariabelen økes med 1 for hver passasje gjennom sløyfen, og sløyfebetingelsen er satt til telling < 5.
Her er en visuell forklaring på hvordan utførelsen skjer: hvordan do-while-løkken fungerer og sjekker for looping-tilstanden fire ganger.
Output Do-while loop: 1 2 3 4
Hvis du bruker en while-løkke i stedet, er dette hva vi ville ha.
//while_example2 #include <stdio.h> int main() { int count = 1; printf("While loop: n"); while(count<5){ printf("%dn",count); count++; }; return 0; }
Figuren nedenfor forklarer while-løkkens utførelse; i dette eksemplet kontrollerer while-sløyfen sløyfebetingelsen fem ganger.
Output While loop: 1 2 3 4
Selv om utgangene for de ovennevnte while- og do-while-løkkene er identiske, er det noen subtile forskjeller.
I en while-løkke kommer sjekk for tilstand først, etterfulgt av løkkekroppen. Så hvis du vil at løkken skal kjøre K ganger, bør det være nøyaktig K kjøringer der løkkebetingelsen er Sann. I iterasjon nummer K+1 blir tilstanden False, og kontrollen bryter ut av loopen.
På den annen side, hvis du bruker en do-while-løkke: løkkebetingelsen kontrolleres for K-te gang først etter at K har passert gjennom løkken.
Så hvorfor er denne marginale forbedringen nyttig?🤔
Anta at looping-tilstanden er beregningsmessig kostbar: involverer for eksempel et kall til en rekursiv funksjon, en kompleks matematisk operasjon, og så videre.
I slike tilfeller, for K-repetisjoner av løkkekroppen, vil det være fordelaktig å bruke en do-while-løkke i stedet.
Mens vs. Do-While Sammendrag
La oss ta en tabell over de viktigste forskjellene vi har lært. 👩🏫
While LoopDo-While LoopCheck for looping-tilstand: Før utførelsen av loop bodyCheck for looping-tilstand: Etter utførelse av loop bodyHvis betingelsen er False initialt, utføres ikke loop body.Hvis betingelsen er False initialt, loop body. utføres nøyaktig én gang. Sløyfebetingelsen kontrolleres K ganger for K passerer gjennom løkken. Sløyfebetingelsen kontrolleres K-1 ganger for K passerer gjennom sløyfen. Når skal mens løkke brukes?
– Loop skal løpe så lenge tilstanden er sann
– For inngangskontrollerte sløyfer
– Når looping-tilstanden ikke er beregningsmessig dyr. Når skal man bruke en do-while-løkke?
– Sløyfe bør kjøres minst én gang for en opprinnelig falsk sløyfetilstand
– For utgangskontrollerte sløyfer
– Når looping-tilstanden er beregningsmessig kostbar
Emulerer Do-While Loop-atferd i Python
Fra forrige seksjon har vi følgende to betingelser for å emulere do-while-løkken:
- Utsagnene i loop-kroppen skal kjøres minst én gang – uavhengig av om looping-betingelsen er True eller False.
- Tilstanden bør kontrolleres etter å ha utført setninger i loop-kroppen. Hvis tilstanden er falsk, bør kontrollen bryte ut av sløyfen: utgangskontroll.
Infinite While Loop og Break Statement i Python
Du kan definere en uendelig mens-løkke i Python, som vist nedenfor.
while True: pass # Instead of True, you can have any condition that is always True while always-True-condition: pass
Break-setningen kan brukes til å bryte ut av en loop-kropp og overføre kontroll til den første setningen utenfor loop-kroppen.
while <condition>: if <some-condition>: break
I det aller første do-while-løkkeeksemplet i C, er betingelsen for å fortsette looping telling < 0. Så betingelsen for å bryte ut av løkken er en telleverdi på null eller større enn null, (telling >= 0).
Her er emuleringen av do-while-løkken i Python:
count = 1 while True: print("Loop runs...") if(count >= 0): break
Python Do-While Loop eksempler
Vi vil se på eksemplene fra forrige seksjon og omskrive dem i Python ved å emulere do while loop.
#1. La oss se på eksemplet på nytt: å skrive ut verdier for tellevariabelen når antallet er mindre enn fem.
Vi vet hvordan vi definerer en uendelig sløyfe slik at sløyfekroppen kjører minst én gang.
Lokkingen skal fortsette så lenge tellingen er mindre enn fem. Derfor, når tellingen når fem, bør vi bryte ut av loopen. Så telle == 5 er utgangskontrollbetingelsen.
Ved å sette det sammen har vi:
count = 1 while True: print(f"Count is {count}") count += 1 if count==5: break
Output Count is 1 Count is 2 Count is 3 Count is 4
#2. Vi kan også omskrive tall-gjetting-spillet som en Python-do-while-konstruksjon.
I tall-gjetting-spillet validerer vi en brukers gjetninger mot et forhåndsdefinert hemmelig nummer. Brukeren bør gjette det hemmelige nummeret innen et visst antall maksimalt tillatte forsøk, for eksempel max_guesses.
Koden skal be brukeren om inndata, uavhengig av om gjetningen er riktig eller feil. Vi kan gjøre dette ved å bruke en uendelig mens-løkke.
Så når bør vi bryte ut av loopen?
Kontrollen skal bryte ut av sløyfen når ett av følgende skjer:
Kodecellen nedenfor viser hvordan vi kan gjøre det.
import random low, high = 5,50 secret_number = random.choice(range(low,high)) max_guesses = 10 num_guesses = 0 while True: guess = int(input("nGuess a number:")) num_guesses += 1 conditions = [num_guesses==max_guesses,guess==secret_number] if any(conditions): break
I stedet for å bryte ut av loopen, kan vi legge til forklarende print()-setninger når vi møter hver av de ovennevnte forholdene og deretter bryte ut av loopen.
import random low, high = 5,50 secret_number = random.choice(range(low,high)) print(secret_number) max_guesses = 10 num_guesses = 0 while True: guess = int(input("nGuess a number:")) num_guesses += 1 if guess==secret_number: print("Congrats, you guessed it right!") break if num_guesses==max_guesses: print("Sorry, you have no more guesses left!") break
To eksempelutganger er vist nedenfor.
I denne prøveutgangen bryter break-setningen ut av loopen når brukeren gjetter det hemmelige nummeret riktig.
# Sample output when secret_number = 43 and user gets it right! Guess a number:4 Guess a number:3 Guess a number:43 Congrats, you guessed it right!
Her er en annen eksempelutgang når brukeren når det maksimale antallet gjetninger som er tilgjengelig, men ikke klarer å gjette det hemmelige nummeret riktig.
# Sample output when secret_number = 33 and user fails to guess it right! Guess a number:3 Guess a number:15 Guess a number:21 Guess a number:50 Guess a number:17 Guess a number:6 Guess a number:18 Guess a number:5 Guess a number:12 Guess a number:43 Sorry, you have no more guesses left!
Konklusjon
Jeg håper denne opplæringen hjalp deg med å forstå hvordan du emulerer en do-while-løkke i Python.
Her er de viktigste takeawayene:
- Bruk en uendelig løkke for å sikre at løkkekroppen går minst én gang. Det kan være en triviell uendelig løkke, for eksempel mens sant, eller det kan være mens
, slik at betingelsen alltid er sant. - Se etter utgangstilstanden inne i loopen og bruk break-setningen for å bryte ut av loopen under en spesifikk tilstand.
Deretter lærer du hvordan du bruker for loops og enumerate()-funksjonen i Python.