For-Silmukat
Tervetuloa osioon, joka on omistettu silmukoille!
Tässä luvussa sukellamme siihen, kuinka silmukat toimivat avaintyökaluna toistuvien tehtävien automatisoinnissa ja ovat välttämättömiä listojen ja muiden iteraatioon perustuvien tietotyyppien tehokkaassa käsittelyssä.
Liity Alexin seuraan, kun hän esittelee for
-silmukoiden käyttöä yksinkertaistamaan toimintoja ruokakaupassamme:
for
-silmukoiden käyttö Pythonissa mahdollistaa koodilohkon toistuvan suorittamisen jokaiselle kokoelman (iteraatio-objektin) kohteelle. Tässä on, mitä sinun tulee tietää for
-silmukoista:
Syntaksi
Aloita for
-silmukka for
-avainsanalla, jota seuraa muuttujan nimi, kuten item
, joka edustaa jokaista elementtiä sekvenssissä. Tätä seuraa in
-avainsana ja sitten iteraatio-objekti, kuten groceryItems
. Silmukan sisällä oleva koodilohko suoritetaan kerran jokaiselle elementille.
Tässä esimerkissä item
toimii iteraattorimuuttujana, joka peräkkäin pääsee käsiksi jokaiseen elementtiin groceryItems
-listassa ja suorittaa print()
-funktion jokaiselle:
groceryItems = ["milk", "eggs", "cheese", "butter"] for item in groceryItems: # Code to be executed print(item)
Iteraatio viittaa prosessiin, jossa suoritetaan koodilohko toistuvasti. Python tukee kahta pääasiallista iteraatiotyyppiä:
Määrätty iteraatio
Missä iteraatioiden määrä on tiedossa etukäteen. for
-silmukat ovat klassinen esimerkki, jotka pysähtyvät automaattisesti kun ne saavuttavat sekvenssin lopun.
Määräämätön iteraatio
Jossa suoritus jatkuu kunnes tietty ehto täyttyy, tyypillisesti käsitellään while
-silmukoilla, joita käsitellään yksityiskohtaisesti tulevassa luvussa.
Esimerkki Sovellukset
for
-silmukoita Pythonissa voidaan käyttää minkä tahansa iteroitavan objektin kanssa (lists
, tuples
, dictionaries
, strings
), mikä mahdollistaa datan käsittelyn elementtikohtaisesti.
Olipa tarpeen päästä käsiksi listan alkioihin, sanakirjan avaimiin tai arvoihin tai merkkijonon merkkeihin, for
-silmukat tarjoavat selkeän syntaksin, joka yksinkertaistaa koodia toistuvissa tehtävissä.
Näin voit käyttää for
-silmukkaa iteroidaksesi merkkijonon ja tuplen alkioiden yli, samalla tavalla kuin näimme listoilla:
# Print each letter in the string vegetable = "Carrot" for letter in vegetable: print(letter) # Tuple containing different categories of the grocery store categories = ("Produce", "Bakery", "Meat", "Dairy") for category in categories: print(category)
Kun käytät for
-silmukkaa sanakirjan kanssa, iteraatio suoraan sanakirjan yli käy oletuksena sen avaimien läpi.
Tässä on mitä odottaa, kun iteroit suoraan sanakirjan yli:
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print each dictionary key print("Product list:") for product in productStock: print(product)
Huomaa, kuinka iteraattorimuuttuja product
pääsee käsiksi vain sanakirjan avaimiin.
Jos haluat iteroida sanakirjan arvojen yli, voit käyttää values()
-metodia.
Tämä on hyödyllistä operaatioissa, jotka vaativat pääsyn arvoihin ilman, että tarvitsee viitata avaimiin:
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print each dictionary value print("Stock counts:") for stock in productStock.values(): print(stock)
Jos sinun täytyy käyttää avaimia ja arvoja samanaikaisesti, items()
-metodi mahdollistaa avain-arvoparien läpikäynnin sanakirjassa.
Käyttääksemme tätä metodia for
-silmukassa, määrittelemme kaksi muuttujaa ennen in
-avainsanaa — yksi avaimelle (product
) ja yksi arvolle (stock
):
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print both the key and value for each dictionary item print("Inventory details:") for product, stock in productStock.items(): print(f"{product} has {stock} units in stock.")
Huom
Tässä esimerkissä käytämme f-merkkijonoja (tunnetaan myös nimellä muotoillut merkkijonolitteraalit) upottaaksemme muuttujat suoraan merkkijonoihin. Syntaksi on yksinkertainen: lisää
f
ennen avauslainausmerkkiä"
, ja sijoita muuttujat tai lausekkeet aaltosulkeiden{}
sisään merkkijonossa. Tämä menetelmä tekee merkkijonojen ja muuttujien yhdistämisestä tulostuslauseissa paljon luettavampaa, joten se on oppimisen arvoinen.
Hyödyntämällä tietämystäsi if/else
-rakenteista, boolean-operaattoreista ja for
-silmukoista, voimme suorittaa yksinkertaisen varastotarkastuksen sanakirjassa:
# Product names as keys and their stock levels as values inventory = { "milk": 120, "eggs": 30, "bread": 80, "apples": 10 } # The threshold stock level that triggers a restock minimum_stock = 50 # Evaluating stock levels and deciding if restocking is necessary print("Checking inventory status:") for product, quantity in inventory.items(): if quantity < minimum_stock: print(f"{product} requires restocking. Only {quantity} units remain.") else: print(f"{product} has adequate stock with {quantity} units available.")
Huom
Saatat huomata, että olemme sijoittaneet
if
-lauseetfor
-silmukan sisään, mikä lisäsi ylimääräisen sisennyksenif
-lohkoon. Kuten aiemmin mainittiin, jokainen sisennetty koodilohko voidaan käsitellä itsenäisenä, riippumatta siitä, mihin se on sijoitettu. Tärkeintä on varmistaa, että sisennys on johdonmukainen ja oikein niiden välillä.
Swipe to start coding
Hallitse varastoa ja tarjouksia ruokakaupassa käymällä läpi varasto, tarkistamalla täydennystarpeet ja soveltamalla tarjouksia.
- Käy läpi jokainen tuote
inventory
-sanakirjassa. - Silmukan sisällä, hae
current_stock
jamin_stock
varastolistasta. - Käytä
if
-lausetta tarkistaaksesi, onko nykyinen varasto pienempi tai yhtä suuri kuin minimivarasto:- Jos on, tulosta täydennysviesti, lisää varastoa
20
:lla, päivitä varasto ja tulosta päivitysviesti.
- Jos on, tulosta täydennysviesti, lisää varastoa
- Käytä toista
if
-lausetta tarkistaaksesi, onko tuotettapromotions
-sanakirjassa.
Tulostusvaatimukset
Jokaiselle tuotteelle tulosta:
-
--- Processing: <item> ---
-
Jos täydennystä tarvitaan:
<item> tarvitsee täydennystä. Nykyinen varasto: <current_stock>. Vähimmäisvaatimus: <min_stock>
Päivitetty varasto tuotteelle <item>: <updated_stock>
-
Jos tarjous on olemassa:
Tarjous tuotteelle <item>: <promotion_details>
-
Jos ei:
Ei tarjouksia tuotteelle <item>
Ratkaisu
Kiitos palautteestasi!