While-silmukat
while
-silmukat ovat keskeinen työkalu määrittelemättömän toiston hallintaan, mikä on hyödyllistä tilanteissa, joissa toistojen määrää ei tiedetä etukäteen, kuten varastotason seuraamisessa kunnes tietty kynnys saavutetaan.
Katso, kun Alex havainnollistaa, miten while
-silmukoita käytetään dynaamisten tilanteiden hallintaan:
while
-silmukka Pythonissa suorittaa koodilohkon jatkuvasti niin kauan kuin määritelty ehto on True
.
Syntaksi
while
-silmukan aloittamiseksi määritellään laskurimuuttuja ja sen jälkeen kirjoitetaan while
-avainsana sekä totuusarvoehto. Ehtoa seuraa kaksoispiste :
, joka osoittaa silmukan koodilohkon alun.
Silmukka suoritetaan toistuvasti kunnes ehto muuttuu False
. Tyypillisesti laskurimuuttujaa päivitetään silmukan sisällä, jotta ehto lopulta muuttuu False
ja silmukka päättyy.
Tarkastellaan tätä while
-silmukkaa esimerkkinä:
# 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
Tässä esimerkissä queue_length
toimii laskurimuuttujana, joka alkaa arvosta 5
. Jokaisella silmukan kierroksella queue_length
pienenee yhdellä (1
), kunnes se saavuttaa arvon 0
. Tällöin silmukka päättyy, koska ehto 0 > 0
arvioituu epätodeksi (False
).
Huomio
On erittäin tärkeää päivittää laskurimuuttuja silmukan sisällä, jotta silmukka päättyy ehtoon. Ilman tätä silmukka jatkuu ikuisesti, estäen muun koodin suorittamisen.
Esimerkkisovellus
Kuvittele, että hallinnoit maitovarastoa ruokakaupassa. Sinun täytyy varmistaa, ettei varasto laske alle tietyn tason, ja kun näin käy, sinun tulee täydentää varastoa riittävälle tasolle.
while
-silmukka on hyödyllinen tässä tilanteessa, koska sen avulla voit täydentää maitoa useissa erissä, kunnes varasto saavuttaa halutun tason. Ilman while
-silmukkaa sinun pitäisi laskea tarkka määrä maitoa kerralla.
Esimerkiksi kaupan työntekijä voi täydentää vain tietyn määrän maitoa yhdellä kerralla (esim. 20
pakkausta täydennystä kohden). Jos varasto ei täyty kokonaan, työntekijä palaa varastolle hakemaan lisää maitoa.
# 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.")
Huom
milk_stock += restock_quantity
on sama kuinmilk_stock = milk_stock + restock_quantity
. Tämä on yksinkertaisempi ja luettavampi tapa ilmaista sama operaatio.
Yllä oleva vuokaavio havainnollistaa while
-silmukan logiikkaa maidon varaston hallinnassa. Huomaa, että laskurimuuttuja milk_stock
, joka alkaa arvosta 15
, kasvaa restock_quantity
-arvolla jokaisella silmukan kierroksella.
Silmukka jatkuu kunnes milk_stock
ylittää min_stock
-kynnyksen arvon 50
, jolloin se pysähtyy.
Swipe to start coding
Hallitse ruokakaupan varastoa käyttämällä while-silmukoita varmistaaksesi, että Bread
, Eggs
ja Apples
täyttävät vähimmäisvarastotasot. Täydennysmääriä säilytetään sanakirjassa.
- Käytä
while
-silmukkaa tarkistaaksesi, onko"Bread"
alle vähimmäisvaraston. Jos on, lisää varastoa käyttämällä sanakirjasta löytyvää täydennysmäärää. - Toista sama logiikka
"Eggs"
- ja"Apples"
-tuotteille, jokaiselle omawhile
-silmukka. - Täydennyksen jälkeen käy läpi
inventory
-sanakirjafor
-silmukalla ja tulosta kaikkien tuotteiden lopulliset varastotasot.
Tulostusvaatimukset
- Jokaisesta täydennettävästä tuotteesta tulosta:
"<Item> stock is low: <$current_stock> units. Restocking..."
- Kaikkien täydennysten jälkeen tulosta
Final Inventory after restocking:
ja sen jälkeen päivitetyt varastotasot:
"<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
- Lisää tyhjä rivi ennen lopullista varastoa käyttämällä
\n
. - Käytä f-merkkijonoja muotoiluun ja yksittäisiä lainausmerkkejä sanakirjan avaimissa tuplalainausmerkkien sisällä.
Huom
Välttääksesi syntaksivirheet f-merkkijonoissa, käytä tuplalainausmerkkejä merkkijonon ympärillä ja yksittäisiä lainausmerkkejä sisällä:
f"Bread stock is low: {inventory['Bread'][0]} units."
Käytä\n
uuden rivin aloittamiseen tulosteessa:"First line.\nSecond line."
Ratkaisu
Kiitos palautteestasi!