While-Lussen
while
-lussen zijn het belangrijkste hulpmiddel voor het omgaan met onbepaalde iteratie, wat nuttig is in scenario's waar het aantal iteraties niet van tevoren bekend is, zoals het bewaken van voorraadniveaus totdat ze een specifieke drempel bereiken.
Kijk hoe Alex demonstreert hoe je while
-lussen kunt gebruiken om dynamische situaties aan te pakken:
Een while
-lus in Python voert continu een blok code uit zolang een gespecificeerde voorwaarde True
blijft.
Syntax
Om een while
-lus te starten, definieer je een teller variabele en volg je deze met het while
-sleutelwoord en een booleaanse voorwaarde. De voorwaarde wordt gevolgd door een dubbele punt :
, wat het begin van het codeblok van de lus aangeeft.
De lus zal herhaaldelijk worden uitgevoerd totdat de voorwaarde False
wordt. Meestal wordt de tellervariabele binnen de lus bijgewerkt om uiteindelijk de voorwaarde False
te maken en de lus te stoppen.
Neem deze while
-lus als voorbeeld:
# 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 het 0
bereikt. Op dat moment eindigt de lus omdat de voorwaarde 0 > 0
evalueert naar False
.
Opmerking
Het is cruciaal om de teller variabele binnen de lus bij te werken om uiteindelijk de voorwaarde te bereiken om de lus te stoppen. Zonder dit zal de lus oneindig blijven draaien, waardoor verdere code niet kan worden uitgevoerd.
Voorbeeldtoepassing
Stel je voor dat je de melkvoorraad in een supermarkt beheert. Je moet ervoor zorgen dat de voorraad niet onder een bepaald niveau zakt, en wanneer dat wel gebeurt, moet je de voorraad aanvullen om het niveau te behouden.
Een while
-lus is nuttig in deze situatie omdat het je in staat stelt om melk in stappen aan te vullen over meerdere iteraties totdat de voorraad het gewenste niveau bereikt. Zonder een while
-lus zou je de exacte hoeveelheid melk in één keer moeten berekenen om aan te vullen.
Stel bijvoorbeeld dat een winkelmedewerker slechts een vaste hoeveelheid melk in één keer kan aanvullen (bijv. 20
pakken per aanvulling). Als de voorraad niet volledig is aangevuld, keert de medewerker terug naar het magazijn om een nieuwe partij 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 gewoon een beknoptere en leesbaardere manier om dezelfde bewerking uit te drukken.
Het stroomdiagram hierboven illustreert de logica achter de while
-lus die wordt gebruikt voor het beheren van de melkvoorraad. Merk op hoe de teller variabele milk_stock
, beginnend bij 15
, wordt verhoogd met de restock_quantity
bij elke lusiteratie.
De lus blijft draaien totdat milk_stock
de min_stock
drempel van 50
overschrijdt, waarna het stopt.
Swipe to start coding
Beheer de inventaris van een kruidenierswinkel door gebruik te maken van while loops om ervoor te zorgen dat Bread
, Eggs
en Apples
hun minimale voorraadniveaus bereiken. Voorraadhoeveelheden worden opgeslagen in een woordenboek.
- Gebruik een
while
-lus om te controleren of"Bread"
onder zijn minimale voorraad is. Zo ja, verhoog de voorraad met de overeenkomstige voorraadhoeveelheid uit het woordenboek. - Herhaal dezelfde logica voor
"Eggs"
en"Apples"
, elk met hun eigenwhile
-lus. - Na het aanvullen, loop door het
inventory
woordenboek met defor
-lus en print de uiteindelijke voorraadniveaus voor alle items.
Uitvoervereisten
- Voor elk aangevuld item, print:
"<Item> stock is low: <$current_stock> units. Restocking..."
- Na alle aanvullingen, print
Final Inventory after restocking:
gevolgd door de bijgewerkte voorraadniveaus:
"<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
- Voeg een nieuwe regel in vóór de uiteindelijke inventaris met
\n
. - Gebruik f-strings voor opmaak en enkele aanhalingstekens binnen dubbel aanhalingstekens voor woordenboeksleutels.
Opmerking
Om syntaxconflicten in f-strings te vermijden, 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!