Range-Funktion
Funktionen range()
i Python är en inbyggd funktion som genererar en sekvens av tal.
Den används ofta för att iterera över en sekvens med loopar, särskilt när det är nödvändigt att köra en loop ett specifikt antal gånger.
Detta är idealiskt för att hantera uppgifter som innebär ett förutsägbart repetitionsmönster, såsom påfyllning av hyllor eller schemaläggning av kampanjer i en livsmedelsbutik.
Här visas hur Alex använder funktionen range()
för att effektivt hantera rutinuppgifter i vårt butiksscenario:
Syntax och argument
Funktionen range()
kan ta upp till tre argument, vilket gör den mångsidig för olika loop-scenarier.
Här är den allmänna syntaxen för funktionen range
:
python
start
: detta är det första talet i sekvensen. Det är valfritt, och om det inte anges börjar sekvensen på0
.stop
: detta är det sista talet i sekvensen, men sekvensen avslutas precis före detta tal. Detta argument är obligatoriskt.step
: detta är hur mycket som läggs till (eller dras ifrån) mellan varje tal i sekvensen. Det är valfritt, och om det inte anges ökar sekvensen med1
varje gång.
Nu när du har förståelse för syntaxen för funktionen range()
, låt oss titta på några exempel för att se hur varje argument — start
, stop
och step
— påverkar looparnas beteende.
Ett enda argument
När funktionen range()
ges ett enda argument behandlas detta som parametern stop
.
I vårt exempel genererar den en sekvens av 7 element som börjar på 0
och slutar på 6
. Loopen itererar över dessa element, vilket representerar de första 7 dagarna som butiken är öppen.
# 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}.")
Observera
Sekvensen börjar på
0
och slutar på6
. Detta sker eftersom Python ofta börjar räkna från0
, vilket minskar behovet av att justera indexering i många situationer.
Två argument
När två argument anges, som 25
(start
) och 32
(stop
), genererar range()
en sekvens från 25
till 31
(eftersom stop
-värdet utesluts från sekvensen).
# Planning seasonal sale days in the last week of December for day in range(25, 32): print(f"Seasonal sale on December {day}.")
Observera
Med denna metod för indexering, där slutvärdet exkluderas, kan du enkelt beräkna antalet element i sekvensen genom att subtrahera argumentet
start
från argumentetstop
. Till exempel,32 - 25 = 7
, vilket innebär att det finns 7 element i sekvensen.
Tre argument
Genom att lägga till ett tredje argument till range()
anger du ett step
-värde, vilket definierar steglängden mellan varje tal i sekvensen.
I detta exempel tar range()
emot 1
(start
), 13
(stop
) och 3
(step
), vilket ger talen 1, 4, 7, 10
. Dessa kan representera starttider för personalens arbetspass under en 12-timmars arbetsdag.
# 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}.")
Exempel på tillämpning
Med funktionen range()
kan vi schemalägga uppgifter för varje veckodag för att säkerställa att alla avdelningar i butiken täcks.
Denna loop körs 7 gånger eftersom range(7)
skapar tal från 0
till 6
(totalt 7 element). Vid varje iteration får variabeln day
ett värde från 0
till 6
, vilket sedan används för att komma åt element från både listorna weekly_tasks
och weekdays
.
# 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
Använd två listor — weekdays
och daily_promotions
— för att skriva ut den kampanj som är tilldelad varje veckodag.
- Använd en
for
-loop med funktionenrange()
för att iterera genom listornas index. - Vid varje iteration:
- Hämta aktuell
weekday
från listanweekdays
. - Hämta motsvarande kampanj från
daily_promotions
med samma index.
- Hämta aktuell
- Skriv ut båda värdena i det angivna formatet.
Utskriftskrav
- För varje dag, skriv ut:
<weekday>: Promotion on <promotion>
Observera
Säkerställ att båda listorna har samma antal element för att undvika indexeringsfel.
Lösning
Tack för dina kommentarer!