While Loops
while
-løkker er det vigtigste værktøj til at håndtere ubestemt iteration, hvilket er nyttigt i scenarier, hvor antallet af iterationer ikke er kendt på forhånd, som at overvåge lagerbeholdninger indtil de når en bestemt tærskel.
Se, hvordan Alex demonstrerer brugen af while
-løkker til at håndtere dynamiske situationer:
En while
-løkke i Python kører kontinuerligt en blok af kode, så længe en specificeret betingelse forbliver True
.
Syntaks
For at starte en while
-løkke definerer du en tællervariabel og følger den med while
-nøgleordet og en boolesk betingelse. Betingelsen efterfølges af et kolon :
, som angiver starten på løkkens kodeblok.
Løkken vil udføre gentagne gange indtil betingelsen bliver False
. Typisk opdateres tællervariablen inde i løkken for til sidst at gøre betingelsen False
og stoppe løkken.
Tag denne while
-løkke som eksempel:
# 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 eksempel fungerer queue_length
som vores tællervariable, der starter ved 5
. Med hver iteration af løkken falder værdien af queue_length
med 1
, indtil den når 0
. På det tidspunkt slutter løkken, fordi betingelsen 0 > 0
evalueres til False
.
Bemærk
Det er afgørende at opdatere tællervariablen inde i løkken for til sidst at opfylde betingelsen for at stoppe løkken. Uden dette vil løkken køre uendeligt, hvilket forhindrer yderligere kode i at blive udført.
Eksempel Applikation
Forestil dig, at du administrerer mælkebeholdningen i en købmandsbutik. Du skal sikre, at beholdningen ikke falder under et bestemt niveau, og når den gør, skal du genopfylde for at opretholde beholdningsniveauet.
En while
-løkke er nyttig i denne situation, fordi den giver dig mulighed for at genopfylde mælk i trin over flere iterationer, indtil beholdningen når det ønskede niveau. Uden en while
-løkke skulle du beregne den nøjagtige mængde mælk, der skulle genopfyldes på én gang.
For eksempel, overvej at en butiksmedarbejder kun kan genopfylde en fast mængde mælk på én tur (f.eks. 20
pakker pr. genopfyldning). Hvis beholdningen ikke er fuldt genopfyldt, vender medarbejderen tilbage til lageret for at hente en ny portion mæ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.")
Bemærk
milk_stock += restock_quantity
svarer tilmilk_stock = milk_stock + restock_quantity
. Det er simpelthen en mere kortfattet og læsbar måde at udtrykke den samme operation på.
Flowchartet ovenfor illustrerer logikken bag while
-løkken, der bruges til at håndtere mælkebeholdningen. Bemærk, hvordan tællervariablen milk_stock
, der starter ved 15
, øges med restock_quantity
ved hver løkkeiteration.
Løkken fortsætter med at køre indtil milk_stock
overstiger min_stock
grænsen på 50
, hvorefter den stopper.
Swipe to start coding
Administrer en købmandsforretnings lager ved at bruge while-løkker for at sikre, at Bread
, Eggs
og Apples
opfylder deres minimumslager niveauer. Genopfyldningsmængder er gemt i en ordbog.
- Brug en
while
-løkke til at kontrollere, om"Bread"
er under dets minimumslager. Hvis ja, øg dets lager ved hjælp af den tilsvarende genopfyldningsmængde fra ordbogen. - Gentag den samme logik for
"Eggs"
og"Apples"
, hver med sin egenwhile
-løkke. - Efter genopfyldning, gennemgå
inventory
-ordbogen ved hjælp affor
-løkken og udskriv de endelige lager niveauer for alle varer.
Outputkrav
- For hver genopfyldt vare, udskriv:
"<Item> stock is low: <$current_stock> units. Restocking..."
- Efter al genopfyldning, udskriv
Final Inventory after restocking:
efterfulgt af de opdaterede lager niveauer:
"<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
- Indsæt en ny linje før det endelige lager ved hjælp af
\n
. - Brug f-strings til formatering og enkelt anførselstegn inde i dobbelt anførselstegn for ordbogsnøgler.
Bemærk
For at undgå syntaks konflikter i f-strings, brug dobbelt anførselstegn omkring strengen og enkelt anførselstegn indeni:
f"Bread stock is low: {inventory['Bread'][0]} units."
Brug\n
til at starte en ny linje i outputtet:"First line.\nSecond line."
Løsning
Tak for dine kommentarer!