While-Lussen
while
-lussen zijn het belangrijkste hulpmiddel voor het afhandelen van onbepaalde iteratie, wat nuttig is in situaties waarin het aantal iteraties niet vooraf bekend is, zoals het monitoren van voorraadniveaus totdat ze een specifieke drempel bereiken.
Bekijk hoe Alex demonstreert hoe je while
-lussen gebruikt om dynamische situaties te beheren:
Een while
-lus in Python voert herhaaldelijk een codeblok uit zolang een opgegeven voorwaarde True
blijft.
Syntax
Om een while
-lus te starten, definieer je een teller-variabele en gebruik je het sleutelwoord while
gevolgd door een booleaanse voorwaarde. De voorwaarde wordt gevolgd door een dubbele punt :
, die het begin van het codeblok van de lus aangeeft.
De lus wordt herhaaldelijk uitgevoerd totdat de voorwaarde False
wordt. Gewoonlijk wordt de teller-variabele binnen de lus bijgewerkt om uiteindelijk de voorwaarde False
te maken en de lus te stoppen.
Bekijk bijvoorbeeld deze while
-lus:
# 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
In dit voorbeeld fungeert queue_length
als onze teller-variabele, beginnend bij 5
. Bij elke iteratie van de lus neemt de waarde van queue_length
af met 1
totdat deze 0
bereikt. Op dat moment eindigt de lus omdat de voorwaarde 0 > 0
als False
wordt geëvalueerd.
Opmerking
Het is essentieel om de teller-variabele binnen de lus bij te werken om uiteindelijk te voldoen aan de voorwaarde om de lus te stoppen. Zonder dit blijft de lus oneindig doorgaan, waardoor verdere code niet wordt uitgevoerd.
Voorbeeldtoepassing
Stel je voor dat je het melkvoorraadbeheer in een supermarkt verzorgt. Je moet ervoor zorgen dat de voorraad niet onder een bepaald niveau zakt, en wanneer dat wel gebeurt, moet je bijvullen om het voorraadniveau te behouden.
Een while
-lus is in deze situatie nuttig omdat je hiermee melk in stappen over meerdere iteraties kunt bijvullen totdat de voorraad het gewenste niveau bereikt. Zonder een while
-lus zou je het exacte aantal melkpakken in één keer moeten berekenen en bijvullen.
Stel bijvoorbeeld dat een winkelmedewerker per keer slechts een vaste hoeveelheid melk kan bijvullen (bijvoorbeeld 20
pakken per keer). Als de voorraad nog niet volledig is aangevuld, keert de medewerker terug naar het magazijn om een nieuwe lading melk te halen.
# 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.")
Opmerking
milk_stock += restock_quantity
is gelijk aanmilk_stock = milk_stock + restock_quantity
. Het is simpelweg een beknoptere en beter leesbare manier om dezelfde bewerking uit te drukken.
Het bovenstaande stroomdiagram toont de logica achter de while
-lus die wordt gebruikt voor het beheren van de melkvoorraad. Merk op dat de tellervariabele milk_stock
, beginnend bij 15
, bij elke iteratie van de lus wordt verhoogd met de restock_quantity
.
De lus blijft doorgaan totdat milk_stock
de min_stock
drempel van 50
overschrijdt, waarna deze stopt.
Swipe to start coding
Beheer de voorraad van een supermarkt met behulp van while-loops om ervoor te zorgen dat Bread
, Eggs
en Apples
voldoen aan hun minimale voorraadniveaus. Aanvulhoeveelheden worden opgeslagen in een dictionary.
- Gebruik een
while
-loop om te controleren of"Bread"
onder het minimale voorraadniveau zit. Verhoog indien nodig de voorraad met de bijbehorende aanvulhoeveelheid uit de dictionary. - Herhaal deze logica voor
"Eggs"
en"Apples"
, elk met een eigenwhile
-loop. - Loop na het aanvullen door de
inventory
-dictionary met eenfor
-loop en druk de uiteindelijke voorraadniveaus van alle artikelen af.
Uitvoereisen
- Voor elk aangevuld artikel, print:
"<Item> stock is low: <$current_stock> units. Restocking..."
- Na het aanvullen, print
Final Inventory after restocking:
gevolgd door de bijgewerkte voorraadniveaus:
"<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
- Voeg een nieuwe regel toe vóór de uiteindelijke voorraad met
\n
. - Gebruik f-strings voor de opmaak en enkele aanhalingstekens binnen dubbele aanhalingstekens voor dictionary-sleutels.
Opmerking
Om syntaxconflicten in f-strings te voorkomen, gebruik dubbele aanhalingstekens rond de string en enkele aanhalingstekens binnenin:
f"Bread stock is low: {inventory['Bread'][0]} units."
Gebruik\n
om een nieuwe regel in de uitvoer te beginnen:"First line.\nSecond line."
Oplossing
Bedankt voor je feedback!