Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Indeksien läpikäynti | Silmukat
Johdatus Pythoniin
Osio 5. Luku 4
single

single

bookIndeksien läpikäynti

Pyyhkäise näyttääksesi valikon

Edellisessä tehtävässä annoit tietyn määrän alkioita range()-funktiolle. Mutta entä jos määrä täytyy määrittää dynaamisesti? Tässä kohtaa indeksien läpikäynti on olennainen tekniikka.

Indeksien läpikäynti on keskeinen tekniikka Pythonissa, jonka avulla voit päästä käsiksi ja muokata alkioita niiden sijainnin perusteella tietorakenteissa, kuten listoissa tai taulukoissa. Tämä on erityisen hyödyllistä tehtävissä, joissa tarvitaan tarkkaa hallintaa jokaiseen alkioon, esimerkiksi varastotason päivittämisessä tai myyntitietojen hallinnassa ruokakaupassa.

Katso, kuinka Alex havainnollistaa, miten indeksien läpikäynti voi yksinkertaistaa toimintoja ruokakauppaesimerkissämme:

Indeksien läpikäynti on hyödyllistä, kun tarvitset sekä listan alkion indeksin että arvon. Kun käytämme range()- ja len()-funktioita yhdessä, yhdistämme kaksi funktiota luodaksemme numerosarjan, joka vastaa listan alkioiden indeksejä. Tämä menetelmä on erityisen hyödyllinen silmukoissa, joissa täytyy käsitellä tai muokata alkioita niiden sijainnin perusteella.

Esimerkiksi tämä for-silmukka hakee sekä indeksin että arvon jokaisesta grocery_list-listan alkiosta:

12345678
# List of grocery items grocery_list = ["Apples", "Bananas", "Carrots", "Cucumbers"] # Initialize a for loop to iterate over indexes for item in range(len(grocery_list)): print("Index:", item) print("Item:", grocery_list[item]) print("----") # Printing a divider line for clarity
copy

Esimerkkisovellus

Kun haluamme soveltaa alennusta hintalistaan, meidän on muokattava listan alkioita suoraan. Yksinkertainen silmukka, kuten for cost in prices:, antaa meille vain kopion jokaisesta alkiosta, ei viittausta varsinaiseen listan alkioon. Tällä tavalla tehdyt muutokset eivät vaikuta alkuperäiseen listaan.

Jotta voimme päivittää jokaisen alkion suoraan prices-listassa, käytämme range(len(prices)) iteroidaksemme indeksien yli. Tämä mahdollistaa alennuskertoimen soveltamisen jokaiseen alkioon:

12345678910111213
# List of original prices of grocery items prices = [1.50, 2.00, 0.75, 3.25] # Discount factor (10% off each item) discount_factor = 0.10 # Iterate over the list of prices using range(len()) for cost in range(len(prices)): # Apply the discount by reducing the price prices[cost] -= prices[cost] * discount_factor print(f"New price of item {cost + 1}: ${prices[cost]}") print("Updated prices:", prices)
copy

Huomautus

  • Kaava prices[cost] -= prices[cost] * discount_factor vastaa muotoa prices[cost] = prices[cost] - prices[cost] * discount_factor. Tämä vähentää alkuperäisestä hinnasta alennuksen määrän, jolloin alennus toteutuu;

  • Tulostuksessa cost + 1 säätää indeksiä niin, että se näyttää alkavan 1:stä 0:n sijaan, mikä tekee siitä käyttäjäystävällisemmän.

Tämä menetelmä varmistaa, että alkuperäinen lista prices päivittyy suoraan uusilla, alennetuilla hinnoilla, ja muutokset näkyvät välittömästi kaikkialla ohjelmassa, missä prices-listaa käytetään.

Tehtävä

Pyyhkäise aloittaaksesi koodauksen

Tässä tehtävässä sovelletaan eri alennusprosentteja tuotteen hintoihin niiden sijainnin (indeksin) perusteella listassa.

Saat listan tuotehinnoista. Jokainen hinta tulee päivittää sen indeksin mukaisesti.

Vaiheet

  1. Aloita annetulla hintalistalla:
prices = [29.99, 45.50, 12.75, 38.20]
  1. Käytä for-silmukkaa yhdessä range()- ja len()-funktioiden kanssa käydäksesi läpi prices-listan indeksit (indeksistä 0 viimeiseen indeksiin).

  2. Silmukan sisällä tarkista nykyinen indeksi ja sovella vastaavaa alennusta:

  • Indeksi 010 % alennus
  • Indeksi 120 % alennus
  • Indeksi 215 % alennus
  • Indeksi 35 % alennus
  1. Päivitä jokainen hinta suoraan prices-listaan alennuksen jälkeen.

  2. Päivittämisen jälkeen tulosta tulos seuraavassa muodossa:

Updated price for item {index}: ${updated_price:.2f}

Huom

.2f muotoilee luvun kahden desimaalin tarkkuudella (esimerkiksi 5 muuttuu muotoon 5.00). Käytä sitä f-merkkijonossa näin: {price:.2f}.

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

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

some-alt