Range-funktion
Funktionen range()
i Python er en indbygget funktion, der genererer en sekvens af tal.
Den bruges ofte til at iterere over en sekvens med løkker, især når det er nødvendigt at udføre en løkke et bestemt antal gange.
Dette er ideelt til opgaver, der involverer et forudsigeligt gentagelsesmønster, såsom genopfyldning af hylder eller planlægning af udsalg i et supermarked.
Lad os se, hvordan Alex anvender range()
-funktionen til effektiv håndtering af rutineopgaver i vores supermarkedsscenarie:
Syntaks og argumenter
Funktionen range()
kan tage op til tre argumenter, hvilket gør den alsidig til forskellige løkkescenarier.
Her er den generelle syntaks for range
-funktionen:
python
start
: dette er det første tal i sekvensen. Det er valgfrit, og hvis det ikke angives, starter sekvensen ved0
.stop
: dette er det sidste tal i sekvensen, men sekvensen stopper lige før dette tal. Dette argument er påkrævet.step
: dette er det beløb, du lægger til (eller trækker fra) mellem hvert tal i sekvensen. Det er valgfrit, og hvis det ikke angives, øges sekvensen med1
hver gang.
Nu hvor du har forstået syntaksen for range()
-funktionen, kan vi udforske nogle eksempler for at se, hvordan hvert argument — start
, stop
og step
— påvirker løkkers opførsel.
Et enkelt argument
Når range()
-funktionen får et enkelt argument, behandles dette som stop
-parameteren.
I vores eksempel genererer den en sekvens af 7 elementer startende fra 0
og sluttende ved 6
. Løkken itererer over disse elementer, hvilket repræsenterer de første 7 dage, butikken har åbent.
# 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}.")
Bemærk
Sekvensen starter ved
0
og slutter ved6
. Dette sker, fordi Python ofte starter tælling fra0
, hvilket mindsker behovet for at justere indeksering i mange situationer.
To argumenter
Når der angives to argumenter, såsom 25
(start
) og 32
(stop
), genererer range()
en sekvens fra 25
til 31
(da stop
-værdien udelades fra sekvensen).
# Planning seasonal sale days in the last week of December for day in range(25, 32): print(f"Seasonal sale on December {day}.")
Bemærk
Med denne metode til indeksering, hvor slut-elementet er udelukket, kan du nemt beregne antallet af elementer i sekvensen ved at trække
start
-argumentet frastop
-argumentet. For eksempel,32 - 25 = 7
, hvilket betyder, at der er 7 elementer i sekvensen.
Tre argumenter
Ved at tilføje et tredje argument til range()
, introduceres en step
-værdi, som definerer intervallet mellem hvert tal i sekvensen.
I dette eksempel tager range()
1
(start
), 13
(stop
) og 3
(step
), hvilket giver tallene 1, 4, 7, 10
. Disse kan repræsentere starttidspunkterne for medarbejdernes vagter i løbet af en 12-timers arbejdsdag.
# 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}.")
Eksempel på anvendelse
Med range()
-funktionen kan vi planlægge opgaver for hver ugedag for at sikre, at alle afdelinger i butikken er dækket.
Denne løkke kører 7 gange, fordi range(7)
skaber tal fra 0
til 6
(i alt 7 elementer). I hver iteration får variablen day
en værdi fra 0
til 6
, som derefter bruges til at tilgå elementer fra både weekly_tasks
og weekdays
-listerne.
# 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
Brug to lister — weekdays
og daily_promotions
— til at udskrive den kampagne, der er tildelt hver ugedag.
- Brug en
for
-løkke med funktionenrange()
til at iterere gennem listens indekser. - I hver iteration:
- Hent den aktuelle
weekday
fra listenweekdays
. - Hent den tilsvarende kampagne fra
daily_promotions
ved hjælp af samme indeks.
- Hent den aktuelle
- Udskriv begge værdier i det angivne format.
Outputkrav
- For hver dag, udskriv:
<weekday>: Promotion på <promotion>
Bemærk
Sørg for, at begge lister har samme antal elementer for at undgå indeksfejl.
Løsning
Tak for dine kommentarer!