Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele For-silmukat | Silmukat
Johdatus Pythoniin

bookFor-silmukat

Tervetuloa silmukoihin keskittyvään osioon!

Tässä luvussa perehdytään siihen, miten silmukat toimivat keskeisenä työkaluna toistuvien tehtävien automatisoinnissa ja ovat 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ä on, mitä sinun tulee tietää for-silmukoista:

Syntaksi

Aloita for-silmukka for-avainsanalla, jota seuraa muuttujan nimi, kuten item, joka edustaa jokaista jonoa olevaa alkiota. Tätä seuraa in-avainsana ja sitten iteroitava objekti, kuten groceryItems. Silmukan sisällä oleva koodilohko suoritetaan kerran jokaiselle alkiolle.

Tässä esimerkissä item toimii iteraattorimuuttujana, joka käy läpi jokaisen alkion groceryItems-listassa ja suorittaa print()-funktion jokaiselle niistä:

1234
groceryItems = ["milk", "eggs", "cheese", "butter"] for item in groceryItems: # Code to be executed print(item)
copy

Iteraatio tarkoittaa koodilohkon suorittamista toistuvasti. Python tukee kahta pääasiallista iteraatiotyyppiä:

Määrätty iteraatio

Tilanne, jossa iteraatioiden 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 iteraatio

Suoritus jatkuu kunnes tietty ehto täyttyy, mikä hoidetaan tyypillisesti while-silmukoilla, joita 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ä.

Seuraavassa esimerkissä näytetään, kuinka 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)
copy

Kun käytät 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)
copy

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)
copy

Jos tarvitsee käyttää sekä avaimia että arvoja samanaikaisesti, items()-metodi mahdollistaa sanakirjan avain-arvo-parien läpikäynnin.

Tätä metodia käytettäessä for-silmukassa määritellään kaksi muuttujaa ennen in-avainsanaa — toinen avaimelle (product) ja toinen 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.")
copy

Huom

Tässä esimerkissä käytetään f-merkkijonoja (tunnetaan myös nimellä muotoillut merkkijonot) muuttujien upottamiseen suoraan merkkijonoon. Syntaksi on yksinkertainen: lisää f ennen 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.")
copy

Huom

Saatat huomata, että olemme sijoittaneet if-lauseet for-silmukan sisälle, mikä lisäsi ylimääräisen sisennyksen if-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 yhtenäinen ja oikein toteutettu niiden välillä.

Tehtävä

Swipe to start coding

Tuotesumman laskeminen

Laske tuotteiden kokonaiskustannus käyttämällä for-silmukkaa, joka käy läpi hintojen listan.

  1. Luo muuttuja total ja aseta sen arvoksi 0.
  2. Käytä for-silmukkaa käydäksesi läpi jokainen price prices-listassa.
  3. Lisää jokainen price total-muuttujaan silmukan sisällä.
  4. Tulosta lopullinen total silmukan jälkeen.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 1
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you explain the difference between iterating over a list, tuple, and dictionary?

How do I use a for loop to access both keys and values in a dictionary?

Can you give more examples of using for loops with different data types?

close

bookFor-silmukat

Pyyhkäise näyttääksesi valikon

Tervetuloa silmukoihin keskittyvään osioon!

Tässä luvussa perehdytään siihen, miten silmukat toimivat keskeisenä työkaluna toistuvien tehtävien automatisoinnissa ja ovat 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ä on, mitä sinun tulee tietää for-silmukoista:

Syntaksi

Aloita for-silmukka for-avainsanalla, jota seuraa muuttujan nimi, kuten item, joka edustaa jokaista jonoa olevaa alkiota. Tätä seuraa in-avainsana ja sitten iteroitava objekti, kuten groceryItems. Silmukan sisällä oleva koodilohko suoritetaan kerran jokaiselle alkiolle.

Tässä esimerkissä item toimii iteraattorimuuttujana, joka käy läpi jokaisen alkion groceryItems-listassa ja suorittaa print()-funktion jokaiselle niistä:

1234
groceryItems = ["milk", "eggs", "cheese", "butter"] for item in groceryItems: # Code to be executed print(item)
copy

Iteraatio tarkoittaa koodilohkon suorittamista toistuvasti. Python tukee kahta pääasiallista iteraatiotyyppiä:

Määrätty iteraatio

Tilanne, jossa iteraatioiden 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 iteraatio

Suoritus jatkuu kunnes tietty ehto täyttyy, mikä hoidetaan tyypillisesti while-silmukoilla, joita 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ä.

Seuraavassa esimerkissä näytetään, kuinka 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)
copy

Kun käytät 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)
copy

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)
copy

Jos tarvitsee käyttää sekä avaimia että arvoja samanaikaisesti, items()-metodi mahdollistaa sanakirjan avain-arvo-parien läpikäynnin.

Tätä metodia käytettäessä for-silmukassa määritellään kaksi muuttujaa ennen in-avainsanaa — toinen avaimelle (product) ja toinen 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.")
copy

Huom

Tässä esimerkissä käytetään f-merkkijonoja (tunnetaan myös nimellä muotoillut merkkijonot) muuttujien upottamiseen suoraan merkkijonoon. Syntaksi on yksinkertainen: lisää f ennen 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.")
copy

Huom

Saatat huomata, että olemme sijoittaneet if-lauseet for-silmukan sisälle, mikä lisäsi ylimääräisen sisennyksen if-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 yhtenäinen ja oikein toteutettu niiden välillä.

Tehtävä

Swipe to start coding

Tuotesumman laskeminen

Laske tuotteiden kokonaiskustannus käyttämällä for-silmukkaa, joka käy läpi hintojen listan.

  1. Luo muuttuja total ja aseta sen arvoksi 0.
  2. Käytä for-silmukkaa käydäksesi läpi jokainen price prices-listassa.
  3. Lisää jokainen price total-muuttujaan silmukan sisällä.
  4. Tulosta lopullinen total silmukan jälkeen.

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 1
single

single

some-alt