While-Loopar
while
-loopar är det viktigaste verktyget för att hantera obestämd iteration, vilket är användbart i scenarier där antalet iterationer inte är känt i förväg, som att övervaka lagernivåer tills de når en specifik tröskel.
Titta när Alex demonstrerar hur man använder while
-loopar för att hantera dynamiska situationer:
En while
-loop i Python kör kontinuerligt en kodblock så länge ett specificerat villkor förblir True
.
Syntax
För att starta en while
-loop, definierar du en räknarvariabel och följer den med while
-nyckelordet och ett booleskt villkor. Villkoret följs av ett kolon :
, vilket indikerar början på loopens kodblock.
Loopen kommer att köras upprepade gånger tills villkoret blir False
. Vanligtvis uppdateras räknarvariabeln inuti loopen för att så småningom göra villkoret False
och stoppa loopen.
Ta denna while
-loop som exempel:
# 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 det här exemplet fungerar queue_length
som vår räknarvariabel, som börjar på 5
. Vid varje loopiteration minskar värdet av queue_length
med 1
tills det når 0
. Vid den tidpunkten avslutas loopen eftersom villkoret 0 > 0
utvärderas till False
.
Notera
Det är viktigt att uppdatera räknarvariabeln inuti loopen för att slutligen uppfylla villkoret för att stoppa loopen. Utan detta kommer loopen att köras oändligt, vilket förhindrar att någon ytterligare kod körs.
Exempelapplikation
Föreställ dig att du hanterar mjölkförrådet i en livsmedelsbutik. Du behöver säkerställa att lagret inte sjunker under en viss nivå, och när det gör det, bör du fylla på för att upprätthålla lagernivån.
En while
-loop är användbar i denna situation eftersom den låter dig fylla på mjölk i steg över flera iterationer tills lagret når önskad nivå. Utan en while
-loop skulle du behöva beräkna den exakta mängden mjölk att fylla på allt på en gång.
Till exempel, tänk på att en butiksarbetare endast kan fylla på en fast mängd mjölk i en resa (t.ex. 20
paket per påfyllning). Om lagret inte är helt påfyllt, återvänder arbetaren till lagret för att hämta en annan omgång mjölk.
# 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.")
Notera
milk_stock += restock_quantity
är ekvivalent medmilk_stock = milk_stock + restock_quantity
. Det är helt enkelt ett mer kortfattat och läsbart sätt att uttrycka samma operation.
Flödesschemat ovan illustrerar logiken bakom while
-loopen som används för att hantera mjölkinventariet. Notera hur räknarvariabeln milk_stock
, som börjar på 15
, ökas med restock_quantity
vid varje loopiteration.
Loopen fortsätter att köras tills milk_stock
överstiger min_stock
tröskeln på 50
, vid vilken punkt den stannar.
Swipe to start coding
Hantera en livsmedelsbutiks lager genom att använda while loops för att säkerställa att Bread
, Eggs
och Apples
uppfyller sina minimilagernivåer. Påfyllningskvantiteter lagras i en ordbok.
- Använd en
while
-loop för att kontrollera om"Bread"
är under sitt minimilager. Om så är fallet, öka dess lager med motsvarande påfyllningskvantitet från ordboken. - Upprepa samma logik för
"Eggs"
och"Apples"
, var och en med sin egenwhile
-loop. - Efter påfyllning, loopa genom
inventory
-ordboken med hjälp avfor
-loopen och skriv ut de slutliga lagernivåerna för alla artiklar.
Utmatningskrav
- För varje påfylld artikel, skriv ut:
"<Item> stock is low: <$current_stock> units. Restocking..."
- Efter all påfyllning, skriv ut
Final Inventory after restocking:
följt av de uppdaterade lagernivåerna:
"<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
- Infoga en ny rad före den slutliga inventeringen med
\n
. - Använd f-strings för formatering och enkla citattecken inuti dubbelciterade strängar för ordboksnycklar.
Notera
För att undvika syntaxkonflikter i f-strings, använd dubbla citattecken runt strängen och enkla citattecken inuti:
f"Bread stock is low: {inventory['Bread'][0]} units."
Använd\n
för att starta en ny rad i utmatningen:"First line.\nSecond line."
Lösning
Tack för dina kommentarer!