For-silmukat
Tervetuloa silmukoihin keskittyvään osioon!
Tässä luvussa perehdytään siihen, kuinka silmukat ovat keskeinen työkalu toistuvien tehtävien automatisoinnissa ja olennaisia listojen sekä muiden iteraattoridatatyyppien tehokkaassa käsittelyssä.
Liity Alexin seuraan, kun hän havainnollistaa for-silmukoiden käyttöä helpottamaan toimintaa ruokakaupassamme:
for-silmukoiden käyttö Pythonissa mahdollistaa koodilohkon toistuvan suorittamisen jokaiselle kokoelman (iteraattoriobjekti) alkiolle. Tässä keskeiset asiat for-silmukoista:
Syntaksi
Aloita for-silmukka for-avainsanalla, jota seuraa muuttujan nimi, kuten item, joka edustaa kutakin jonoalkiota. Tämän jälkeen tulee in-avainsana ja iteroitava objekti, kuten groceryItems. Silmukan sisällä oleva koodilohko suoritetaan kerran jokaista alkiota kohden.
Tässä esimerkissä item toimii iteraattorimuuttujana, joka käy läpi jokaisen alkion groceryItems-listassa ja suorittaa print()-funktion jokaiselle:
1234groceryItems = ["milk", "eggs", "cheese", "butter"] for item in groceryItems: # Code to be executed print(item)
Iterointi tarkoittaa koodilohkon suorittamista toistuvasti. Python tukee kahta pääasiallista iterointityyppiä:
Määrätty iterointi
Tilanne, jossa toistojen määrä on tiedossa etukäteen. for-silmukat ovat tästä klassinen esimerkki, ja ne pysähtyvät automaattisesti saavuttaessaan sekvenssin lopun.
Määräämätön iterointi
Suoritus jatkuu kunnes tietty ehto täyttyy, mikä hoidetaan tyypillisesti while-silmukoilla. Näitä käsitellään tarkemmin seuraavassa luvussa.
Esimerkkisovelluksia
for-silmukoita Pythonissa voidaan käyttää kaikkien iteroitavien olioiden kanssa (lists, tuples, dictionaries, strings), mikä mahdollistaa tietojen käsittelyn yksittäisen alkion tasolla.
Olipa kyseessä listan alkioiden, sanakirjan avainten tai arvojen, tai merkkijonon merkkien käsittely, for-silmukat tarjoavat selkeän syntaksin, joka yksinkertaistaa toistuvia tehtäviä.
Tässä esimerkki siitä, miten for-silmukkaa voidaan käyttää iteroimaan merkkijonon ja tuplen alkioiden yli, samalla tavalla kuin listoissa:
123456789# 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äytetään for-silmukkaa sanakirjan kanssa, iteraatio sanakirjan yli käy oletuksena sen avainten kautta.
Tältä näyttää, kun iteroit suoraan sanakirjan yli:
1234567# 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, että iteraattorimuuttuja product käsittelee vain sanakirjan avaimia.
Sanakirjan arvojen läpikäymiseen voidaan käyttää values()-metodia.
Tämä on hyödyllistä tilanteissa, joissa tarvitaan pääsyä arvoihin ilman viittausta avaimiin:
1234567# 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 tarvitset samanaikaisesti pääsyn avaimiin ja arvoihin, items()-metodi mahdollistaa avain-arvo-parien läpikäynnin sanakirjassa.
Tätä metodia käytettäessä for-silmukassa määritellään kaksi muuttujaa ennen in-avainsanaa — yksi avaimelle (product) ja yksi arvolle (stock):
1234567# 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äytetään f-merkkijonoja (tunnetaan myös nimellä muotoillut merkkijonot) muuttujien upottamiseen suoraan merkkijonoon. Syntaksi on yksinkertainen: lisää
fennen avauslainausmerkkiä"ja sijoita muuttujat tai lausekkeet aaltosulkeisiin{}merkkijonon sisällä. Tämä tapa tekee merkkijonojen ja muuttujien yhdistämisestä tulostuslauseissa huomattavasti selkeämpää, joten sen opettelu kannattaa.
Hyödyntämällä tietämystäsi if/else-rakenteista, loogisista operaattoreista ja for-silmukoista, voidaan suorittaa yksinkertainen varastotarkistus sanakirjalle:
123456789101112131415161718# 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älle, mikä lisäsi ylimääräisen sisennyksenif-lohkoon. Kuten aiemmin mainittiin, jokainen sisennetty koodilohko voidaan käsitellä itsenäisesti riippumatta siitä, mihin se on sijoitettu. Tärkeintä on varmistaa, että sisennys on johdonmukaista ja oikein niiden välillä.
Swipe to start coding
Tuotesumman laskeminen
Laske tuotteiden kokonaiskustannus käyttämällä for-silmukkaa, joka käy läpi hintalistan.
- Luo muuttuja
totalja aseta sen arvoksi0. - Käytä for-silmukkaa käydäksesi läpi jokainen
priceprices-listassa. - Lisää jokainen
pricetotal-muuttujaan silmukan sisällä. - Tulosta lopullinen
totalsilmukan jälkeen.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 2.17
For-silmukat
Pyyhkäise näyttääksesi valikon
Tervetuloa silmukoihin keskittyvään osioon!
Tässä luvussa perehdytään siihen, kuinka silmukat ovat keskeinen työkalu toistuvien tehtävien automatisoinnissa ja olennaisia listojen sekä muiden iteraattoridatatyyppien tehokkaassa käsittelyssä.
Liity Alexin seuraan, kun hän havainnollistaa for-silmukoiden käyttöä helpottamaan toimintaa ruokakaupassamme:
for-silmukoiden käyttö Pythonissa mahdollistaa koodilohkon toistuvan suorittamisen jokaiselle kokoelman (iteraattoriobjekti) alkiolle. Tässä keskeiset asiat for-silmukoista:
Syntaksi
Aloita for-silmukka for-avainsanalla, jota seuraa muuttujan nimi, kuten item, joka edustaa kutakin jonoalkiota. Tämän jälkeen tulee in-avainsana ja iteroitava objekti, kuten groceryItems. Silmukan sisällä oleva koodilohko suoritetaan kerran jokaista alkiota kohden.
Tässä esimerkissä item toimii iteraattorimuuttujana, joka käy läpi jokaisen alkion groceryItems-listassa ja suorittaa print()-funktion jokaiselle:
1234groceryItems = ["milk", "eggs", "cheese", "butter"] for item in groceryItems: # Code to be executed print(item)
Iterointi tarkoittaa koodilohkon suorittamista toistuvasti. Python tukee kahta pääasiallista iterointityyppiä:
Määrätty iterointi
Tilanne, jossa toistojen määrä on tiedossa etukäteen. for-silmukat ovat tästä klassinen esimerkki, ja ne pysähtyvät automaattisesti saavuttaessaan sekvenssin lopun.
Määräämätön iterointi
Suoritus jatkuu kunnes tietty ehto täyttyy, mikä hoidetaan tyypillisesti while-silmukoilla. Näitä käsitellään tarkemmin seuraavassa luvussa.
Esimerkkisovelluksia
for-silmukoita Pythonissa voidaan käyttää kaikkien iteroitavien olioiden kanssa (lists, tuples, dictionaries, strings), mikä mahdollistaa tietojen käsittelyn yksittäisen alkion tasolla.
Olipa kyseessä listan alkioiden, sanakirjan avainten tai arvojen, tai merkkijonon merkkien käsittely, for-silmukat tarjoavat selkeän syntaksin, joka yksinkertaistaa toistuvia tehtäviä.
Tässä esimerkki siitä, miten for-silmukkaa voidaan käyttää iteroimaan merkkijonon ja tuplen alkioiden yli, samalla tavalla kuin listoissa:
123456789# 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äytetään for-silmukkaa sanakirjan kanssa, iteraatio sanakirjan yli käy oletuksena sen avainten kautta.
Tältä näyttää, kun iteroit suoraan sanakirjan yli:
1234567# 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, että iteraattorimuuttuja product käsittelee vain sanakirjan avaimia.
Sanakirjan arvojen läpikäymiseen voidaan käyttää values()-metodia.
Tämä on hyödyllistä tilanteissa, joissa tarvitaan pääsyä arvoihin ilman viittausta avaimiin:
1234567# 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 tarvitset samanaikaisesti pääsyn avaimiin ja arvoihin, items()-metodi mahdollistaa avain-arvo-parien läpikäynnin sanakirjassa.
Tätä metodia käytettäessä for-silmukassa määritellään kaksi muuttujaa ennen in-avainsanaa — yksi avaimelle (product) ja yksi arvolle (stock):
1234567# 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äytetään f-merkkijonoja (tunnetaan myös nimellä muotoillut merkkijonot) muuttujien upottamiseen suoraan merkkijonoon. Syntaksi on yksinkertainen: lisää
fennen avauslainausmerkkiä"ja sijoita muuttujat tai lausekkeet aaltosulkeisiin{}merkkijonon sisällä. Tämä tapa tekee merkkijonojen ja muuttujien yhdistämisestä tulostuslauseissa huomattavasti selkeämpää, joten sen opettelu kannattaa.
Hyödyntämällä tietämystäsi if/else-rakenteista, loogisista operaattoreista ja for-silmukoista, voidaan suorittaa yksinkertainen varastotarkistus sanakirjalle:
123456789101112131415161718# 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älle, mikä lisäsi ylimääräisen sisennyksenif-lohkoon. Kuten aiemmin mainittiin, jokainen sisennetty koodilohko voidaan käsitellä itsenäisesti riippumatta siitä, mihin se on sijoitettu. Tärkeintä on varmistaa, että sisennys on johdonmukaista ja oikein niiden välillä.
Swipe to start coding
Tuotesumman laskeminen
Laske tuotteiden kokonaiskustannus käyttämällä for-silmukkaa, joka käy läpi hintalistan.
- Luo muuttuja
totalja aseta sen arvoksi0. - Käytä for-silmukkaa käydäksesi läpi jokainen
priceprices-listassa. - Lisää jokainen
pricetotal-muuttujaan silmukan sisällä. - Tulosta lopullinen
totalsilmukan jälkeen.
Ratkaisu
Kiitos palautteestasi!
single