While-løkker
while
-løkker er det sentrale verktøyet for å håndtere ubestemt iterasjon, noe som er nyttig i situasjoner der antall iterasjoner ikke er kjent på forhånd, som for eksempel å overvåke lagerbeholdning inntil de når en bestemt grense.
Se hvordan Alex demonstrerer bruk av while
-løkker for å håndtere dynamiske situasjoner:
En while
-løkke i Python kjører en kodeblokk gjentatte ganger så lenge en spesifisert betingelse er True
.
Syntaks
For å starte en while
-løkke definerer du en teller-variabel og følger den med nøkkelordet while
og en boolsk betingelse. Betingelsen etterfølges av et kolon :
, som indikerer starten på løkkens kodeblokk.
Løkken vil kjøre gjentatte ganger inntil betingelsen blir False
. Vanligvis oppdateres teller-variabelen inne i løkken for til slutt å gjøre betingelsen False
og stoppe løkken.
Se dette eksempelet på en while
-løkke:
# Handling a queue at a grocery store checkout queue_length = 5 # Initial number of people in the queue while queue_length > 0: # Start the `while` loop as long as the queue isn't empty print(f"Current queue size: {queue_length}") # Simulate serving a customer print("Serving the next customer...") # Decrease the queue length by 1 as a customer leaves # The `-=` operator is a shortcut for `queue_length = queue_length - 1` queue_length -= 1
I dette eksempelet fungerer queue_length
som vår teller-variabel, og starter på 5
. For hver gjennomgang av løkken reduseres verdien av queue_length
med 1
til den når 0
. Da avsluttes løkken fordi betingelsen 0 > 0
evalueres til False
.
Merk
Det er avgjørende å oppdatere teller-variabelen inne i løkken for til slutt å oppfylle betingelsen for å stoppe løkken. Uten dette vil løkken kjøre uendelig, noe som hindrer videre kode fra å bli utført.
Eksempel på bruk
Tenk deg at du administrerer melkebeholdningen i en dagligvarebutikk. Du må sørge for at beholdningen ikke faller under et visst nivå, og når det skjer, må du etterfylle for å opprettholde beholdningen.
En while
-løkke er nyttig i denne situasjonen fordi den lar deg etterfylle melk i flere omganger til beholdningen når ønsket nivå. Uten en while
-løkke måtte du ha beregnet nøyaktig hvor mye melk som skulle etterfylles på én gang.
For eksempel kan en butikkmedarbeider kun etterfylle en fast mengde melk per tur (f.eks. 20
pakker per etterfylling). Hvis beholdningen ikke er fullt etterfylt, går medarbeideren tilbake til lageret for å hente en ny omgang melk.
# Initial amount of milk in stock milk_stock = 15 # Minimum stock level before restocking is necessary min_stock = 50 # Quantity a worker can restock at one time restock_quantity = 20 # Start the loop to restock milk until the stock exceeds the minimum required level while milk_stock < min_stock: # If the loop is running, the condition is `True`, indicating we need more milk print(f"Milk stock is low: {milk_stock} units remaining.") # Simulate the process of restocking milk print("Restocking milk...") # Increase the stock by the quantity the worker can bring in one trip milk_stock += restock_quantity # Output the final stock level after restocking is complete print(f"Milk stock updated: {milk_stock} units, which is now sufficient.")
Merk
milk_stock += restock_quantity
er det samme sommilk_stock = milk_stock + restock_quantity
. Det er bare en mer kortfattet og lesbar måte å uttrykke den samme operasjonen på.
Flytskjemaet ovenfor illustrerer logikken bak while
-løkka som brukes for å håndtere melkebeholdningen. Legg merke til hvordan tellevariabelen milk_stock
, som starter på 15
, økes med restock_quantity
for hver gjennomgang av løkka.
Løkken fortsetter å kjøre til milk_stock
overstiger grenseverdien min_stock
på 50
, og stopper deretter.
Swipe to start coding
Administrer varelageret i en dagligvarebutikk ved å bruke while-løkker for å sikre at Bread
, Eggs
og Apples
oppfyller sine minimumsbeholdninger. Påfyllingsmengder lagres i en ordbok.
- Bruk en
while
-løkke for å sjekke om"Bread"
er under minimumsbeholdningen. Hvis det er tilfelle, øk beholdningen ved å bruke tilsvarende påfyllingsmengde fra ordboken. - Gjenta samme logikk for
"Eggs"
og"Apples"
, hver med sin egenwhile
-løkke. - Etter påfylling, gå gjennom
inventory
-ordboken med enfor
-løkke og skriv ut de endelige beholdningene for alle varer.
Krav til utdata
- For hver vare som fylles på, skriv ut:
"<Item> stock is low: <$current_stock> units. Restocking..."
- Etter all påfylling, skriv ut
Final Inventory after restocking:
etterfulgt av de oppdaterte beholdningene:
"<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
- Sett inn en linjeskift før den endelige beholdningen ved å bruke
\n
. - Bruk f-strenger for formatering og enkeltfnutter inne i dobbeltfnuttede strenger for ordboknøkler.
Merk
For å unngå syntaksfeil i f-strenger, bruk dobbeltfnutter rundt strengen og enkeltfnutter inni:
f"Bread stock is low: {inventory['Bread'][0]} units."
Bruk\n
for å starte en ny linje i utdataene:"First line.\nSecond line."
Løsning
Takk for tilbakemeldingene dine!