Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele While-Silmukat | Silmukat
Johdanto Python-Ohjelmointiin

Pyyhkäise näyttääksesi valikon

book
While-Silmukat

while-silmukat ovat keskeinen työkalu määräämättömän iteraation käsittelyyn, mikä on hyödyllistä tilanteissa, joissa iteraatioiden määrää ei tiedetä etukäteen, kuten varastotasojen seurannassa kunnes ne saavuttavat tietyn kynnyksen.

Katso, kun Alex näyttää, kuinka käyttää while-silmukoita dynaamisten tilanteiden käsittelyyn:

while-silmukka Pythonissa suorittaa koodilohkon jatkuvasti niin kauan kuin määritelty ehto pysyy True.

Syntaksi

Aloittaaksesi while-silmukan, määritä laskurimuuttuja ja seuraa sitä while-avainsanalla ja boolean-ehdolla. Ehtoa seuraa kaksoispiste :, joka osoittaa silmukan koodilohkon alkamisen.

Silmukka suoritetaan toistuvasti kunnes ehto muuttuu False. Tyypillisesti laskurimuuttuja päivitetään silmukan sisällä lopulta tekemään ehdosta False ja pysäyttämään silmukka.

Otetaan esimerkiksi tämä while-silmukka:

1234567891011
# 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
copy

Tässä esimerkissä queue_length toimii laskurimuuttujana, joka alkaa arvosta 5. Jokaisella silmukan kierroksella queue_length-arvo pienenee 1:llä, kunnes se saavuttaa 0. Tällöin silmukka päättyy, koska ehto 0 > 0 arvioituu False.

Huomautus

On tärkeää päivittää laskurimuuttuja silmukan sisällä, jotta lopulta täytetään silmukan pysäyttämisehto. Ilman tätä silmukka jatkuu loputtomasti, estäen muun koodin suorittamisen.

Esimerkki Sovellus

Kuvittele, että hallinnoit maitovarastoa ruokakaupassa. Sinun on varmistettava, että varasto ei laske tietyn tason alapuolelle, ja kun se laskee, sinun pitäisi täydentää varastoa tason ylläpitämiseksi.

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 täydennettäväksi kerralla.

Esimerkiksi, ajattele, että kaupan työntekijä voi täydentää vain tietyn määrän maitoa yhdellä kerralla (esim. 20 pakettia per täydennys). Jos varasto ei ole täysin täydennetty, työntekijä palaa varastoon hakemaan uuden erän maitoa.

123456789101112131415161718
# 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.")
copy

Huom

milk_stock += restock_quantity on sama kuin milk_stock = milk_stock + restock_quantity. Se on yksinkertaisesti tiiviimpi ja luettavampi tapa ilmaista sama operaatio.

Yllä oleva vuokaavio havainnollistaa logiikan, joka on while-silmukan takana, kun hallitaan maitovarastoa. Huomaa, kuinka laskurimuuttuja milk_stock, joka alkaa arvosta 15, kasvaa restock_quantity:n verran jokaisella silmukan kierroksella.

Silmukka jatkaa toimintaansa kunnes milk_stock ylittää min_stock kynnyksen 50, jolloin se pysähtyy.

Tehtävä

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äisvarastotasonsa. Täydennysmäärät tallennetaan sanakirjaan.

  • Käytä while-silmukkaa tarkistaaksesi, onko "Bread" alle vähimmäisvarastonsa. Jos on, lisää sen varastoa käyttämällä vastaavaa täydennysmäärää sanakirjasta.
  • Toista sama logiikka "Eggs" ja "Apples" kohdalla, jokaisella omalla while-silmukallaan.
  • Täydennyksen jälkeen käy läpi inventory-sanakirja käyttäen for-silmukkaa ja tulosta kaikkien tuotteiden lopulliset varastotasot.

Tulostusvaatimukset

  • Jokaiselle täydennetylle tuotteelle 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ää rivinvaihto ennen lopullista varastoa käyttäen \n.
  • Käytä f-stringejä muotoiluun ja yksittäisiä lainausmerkkejä kaksinkertaisten lainausmerkkien sisällä sanakirjan avaimille.

Huom

Välttääksesi syntaksivirheitä f-stringeissä, käytä kaksinkertaisia lainausmerkkejä merkkijonon ympärillä ja yksittäisiä lainausmerkkejä sisällä: f"Bread stock is low: {inventory['Bread'][0]} units."
Käytä \n aloittaaksesi uuden rivin tulosteessa: "First line.\nSecond line."

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 2
Pahoittelemme, että jotain meni pieleen. Mitä tapahtui?

Kysy tekoälyä

expand
ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

book
While-Silmukat

while-silmukat ovat keskeinen työkalu määräämättömän iteraation käsittelyyn, mikä on hyödyllistä tilanteissa, joissa iteraatioiden määrää ei tiedetä etukäteen, kuten varastotasojen seurannassa kunnes ne saavuttavat tietyn kynnyksen.

Katso, kun Alex näyttää, kuinka käyttää while-silmukoita dynaamisten tilanteiden käsittelyyn:

while-silmukka Pythonissa suorittaa koodilohkon jatkuvasti niin kauan kuin määritelty ehto pysyy True.

Syntaksi

Aloittaaksesi while-silmukan, määritä laskurimuuttuja ja seuraa sitä while-avainsanalla ja boolean-ehdolla. Ehtoa seuraa kaksoispiste :, joka osoittaa silmukan koodilohkon alkamisen.

Silmukka suoritetaan toistuvasti kunnes ehto muuttuu False. Tyypillisesti laskurimuuttuja päivitetään silmukan sisällä lopulta tekemään ehdosta False ja pysäyttämään silmukka.

Otetaan esimerkiksi tämä while-silmukka:

1234567891011
# 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
copy

Tässä esimerkissä queue_length toimii laskurimuuttujana, joka alkaa arvosta 5. Jokaisella silmukan kierroksella queue_length-arvo pienenee 1:llä, kunnes se saavuttaa 0. Tällöin silmukka päättyy, koska ehto 0 > 0 arvioituu False.

Huomautus

On tärkeää päivittää laskurimuuttuja silmukan sisällä, jotta lopulta täytetään silmukan pysäyttämisehto. Ilman tätä silmukka jatkuu loputtomasti, estäen muun koodin suorittamisen.

Esimerkki Sovellus

Kuvittele, että hallinnoit maitovarastoa ruokakaupassa. Sinun on varmistettava, että varasto ei laske tietyn tason alapuolelle, ja kun se laskee, sinun pitäisi täydentää varastoa tason ylläpitämiseksi.

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 täydennettäväksi kerralla.

Esimerkiksi, ajattele, että kaupan työntekijä voi täydentää vain tietyn määrän maitoa yhdellä kerralla (esim. 20 pakettia per täydennys). Jos varasto ei ole täysin täydennetty, työntekijä palaa varastoon hakemaan uuden erän maitoa.

123456789101112131415161718
# 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.")
copy

Huom

milk_stock += restock_quantity on sama kuin milk_stock = milk_stock + restock_quantity. Se on yksinkertaisesti tiiviimpi ja luettavampi tapa ilmaista sama operaatio.

Yllä oleva vuokaavio havainnollistaa logiikan, joka on while-silmukan takana, kun hallitaan maitovarastoa. Huomaa, kuinka laskurimuuttuja milk_stock, joka alkaa arvosta 15, kasvaa restock_quantity:n verran jokaisella silmukan kierroksella.

Silmukka jatkaa toimintaansa kunnes milk_stock ylittää min_stock kynnyksen 50, jolloin se pysähtyy.

Tehtävä

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äisvarastotasonsa. Täydennysmäärät tallennetaan sanakirjaan.

  • Käytä while-silmukkaa tarkistaaksesi, onko "Bread" alle vähimmäisvarastonsa. Jos on, lisää sen varastoa käyttämällä vastaavaa täydennysmäärää sanakirjasta.
  • Toista sama logiikka "Eggs" ja "Apples" kohdalla, jokaisella omalla while-silmukallaan.
  • Täydennyksen jälkeen käy läpi inventory-sanakirja käyttäen for-silmukkaa ja tulosta kaikkien tuotteiden lopulliset varastotasot.

Tulostusvaatimukset

  • Jokaiselle täydennetylle tuotteelle 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ää rivinvaihto ennen lopullista varastoa käyttäen \n.
  • Käytä f-stringejä muotoiluun ja yksittäisiä lainausmerkkejä kaksinkertaisten lainausmerkkien sisällä sanakirjan avaimille.

Huom

Välttääksesi syntaksivirheitä f-stringeissä, käytä kaksinkertaisia lainausmerkkejä merkkijonon ympärillä ja yksittäisiä lainausmerkkejä sisällä: f"Bread stock is low: {inventory['Bread'][0]} units."
Käytä \n aloittaaksesi uuden rivin tulosteessa: "First line.\nSecond line."

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 2
Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Pahoittelemme, että jotain meni pieleen. Mitä tapahtui?
some-alt