Range-funktio
Pythonin range()
-funktio on sisäänrakennettu funktio, joka luo numerosarjan.
Sitä käytetään usein silmukoissa, kun halutaan toistaa silmukka tietyn määrän kertoja.
Tämä on ihanteellinen ratkaisu tehtäviin, joissa toistuvuus on ennustettavaa, kuten hyllyjen täydennys tai myyntien aikataulutus ruokakaupassa.
Tarkastellaan, kuinka Alex hyödyntää range()
-funktiota hoitaakseen rutiinitehtäviä ruokakaupassamme tehokkaasti:
Syntaksi ja argumentit
range()
-funktio voi ottaa enintään kolme argumenttia, mikä tekee siitä monipuolisen erilaisiin silmukkatilanteisiin.
Tässä on range
-funktion yleinen syntaksi:
python
start
: sarjan ensimmäinen numero. Tämä on valinnainen, ja jos sitä ei määritetä, sarja alkaa arvosta0
.stop
: sarjan viimeinen numero, mutta sarja päättyy juuri ennen tätä arvoa. Tämä argumentti on pakollinen.step
: lisäyksen (tai vähennyksen) määrä jokaisen numeron välillä sarjassa. Tämä on valinnainen, ja jos sitä ei määritetä, sarja kasvaa arvolla1
jokaisella askeleella.
Nyt kun tunnet range()
-funktion syntaksin, tarkastellaan esimerkkejä siitä, miten kukin argumentti — start
, stop
ja step
— vaikuttaa silmukoiden toimintaan.
Yksi argumentti
Kun range()
-funktiolle annetaan yksi argumentti, sitä käsitellään stop
-parametrina.
Tässä esimerkissä se tuottaa 7 alkion sarjan, joka alkaa arvosta 0
ja päättyy arvoon 6
. Silmukka iteroi näiden alkioiden yli, mikä vastaa kaupan ensimmäistä 7 aukiolopäivää.
# Announce store opening every day for 7 days for day in range(7): print(f"Good morning! The store is now open on day {day}.")
Huom
Jono alkaa arvosta
0
ja päättyy arvoon6
. Tämä johtuu siitä, että Pythonissa laskeminen alkaa usein arvosta0
, mikä vähentää tarvetta säätää indeksointia monissa tilanteissa.
Kaksi argumenttia
Kun annetaan kaksi argumenttia, kuten 25
(start
) ja 32
(stop
), range()
tuottaa jonon arvosta 25
arvoon 31
(koska stop
-arvo ei sisälly jonomuotoon).
# Planning seasonal sale days in the last week of December for day in range(25, 32): print(f"Seasonal sale on December {day}.")
Huom
Tällä indeksointitavalla, jossa loppuelementti jätetään pois, voit helposti laskea jonon alkioiden määrän vähentämällä
start
-argumentinstop
-argumentista. Esimerkiksi,32 - 25 = 7
, mikä tarkoittaa, että jaksossa on 7 alkiota.
Kolme argumenttia
Lisäämällä kolmannen argumentin range()
-funktioon, otetaan käyttöön step
-arvo, joka määrittää välin jokaisen luvun välillä jaksossa.
Tässä esimerkissä range()
saa arvot 1
(start
), 13
(stop
) ja 3
(step
), jolloin muodostuvat luvut 1, 4, 7, 10
. Nämä voivat kuvata työntekijöiden vuorojen aloitustunteja 12 tunnin työpäivän aikana.
# Schedule staff shifts every three hours throughout a 12-hour day for hour in range(1, 13, 3): print(f"Staff shift starts at hour {hour}.")
Esimerkkisovellus
range()
-funktion avulla voidaan aikatauluttaa tehtävät jokaiselle viikonpäivälle varmistaen, että kaikki myymälän osastot tulevat hoidetuksi.
Tämä silmukka suoritetaan 7 kertaa, koska range(7)
muodostaa luvut väliltä 0
–6
(yhteensä 7 alkiota). Jokaisella kierroksella muuttuja day
saa arvon väliltä 0
–6
, jota käytetään sekä weekly_tasks
- että weekdays
-listojen alkioiden hakemiseen.
# List of daily tasks for a week weekly_tasks = [ "Restock Fruits", "Clean Dairy Section", "Review Meat Inventory", "Restock Vegetables", "Check Bakery Expiry Dates", "Organize Front Displays", "Prepare Weekly Sales Report" ] # List of weekdays corresponding to each task weekdays = [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] # Loop through each day using the range function for day in range(7): task = weekly_tasks[day] # Access the task corresponding to the current day weekday = weekdays[day] # Access the corresponding weekday print(f"{weekday} Task: {task}")
Swipe to start coding
Käytä kahta listaa — weekdays
ja daily_promotions
— tulostaaksesi kullekin viikonpäivälle määritetyn tarjouksen.
- Käytä
for
-silmukkaa yhdessärange()
-funktion kanssa käydäksesi läpi listojen indeksit. - Jokaisella iteraatiolla:
- Hae nykyinen
weekday
weekdays
-listasta. - Hae vastaava tarjous
daily_promotions
-listasta samalla indeksillä.
- Hae nykyinen
- Tulosta molemmat arvot määritetyssä muodossa.
Tulostusvaatimukset
- Jokaiselle päivälle tulosta:
<weekday>: Promotion on <promotion>
Huom
Varmista, että molemmissa listoissa on sama määrä alkioita, jotta vältät indeksointivirheet.
Ratkaisu
Kiitos palautteestasi!