Range-Functie
De range()
-functie in Python is een ingebouwde functie die een reeks getallen genereert.
Deze wordt vaak gebruikt om over een reeks te itereren met lussen, vooral wanneer u een lus een specifiek aantal keren moet uitvoeren.
Dit is ideaal voor taken met een voorspelbaar herhalingspatroon, zoals het aanvullen van schappen of het plannen van aanbiedingen in een supermarkt.
Laten we bekijken hoe Alex de range()
-functie gebruikt om routinetaken in ons supermarktvoorbeeld efficiënt te beheren:
Syntax en Argumenten
De range()
-functie kan tot drie argumenten aannemen, waardoor deze veelzijdig is voor verschillende lus-scenario's.
Hier is de algemene syntax voor de range
-functie:
python
start
: dit is het eerste getal van de reeks. Dit is optioneel; als u het niet opgeeft, begint de reeks bij0
.stop
: dit is het laatste getal van de reeks, maar de reeks stopt net vóór dit getal. Dit argument is verplicht.step
: dit is het aantal dat u optelt (of aftrekt) tussen elk getal in de reeks. Dit is optioneel; als u het niet opgeeft, wordt de reeks telkens met1
verhoogd.
Nu u de syntax van de range()
-functie begrijpt, bekijken we enkele voorbeelden om te zien hoe elk argument — start
, stop
en step
— het gedrag van lussen beïnvloedt.
Eén argument
Wanneer de range()
-functie één argument krijgt, wordt dit beschouwd als de stop
-parameter.
In ons voorbeeld genereert het een reeks van 7 elementen beginnend bij 0
en eindigend bij 6
. De lus itereert over deze elementen, wat de eerste 7 dagen dat de winkel open is voorstelt.
# 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}.")
Opmerking
De reeks begint bij
0
en eindigt bij6
. Dit komt doordat Python vaak begint te tellen vanaf0
, wat de noodzaak om indexering aan te passen in veel situaties vermindert.
Twee Argumenten
Wanneer twee argumenten worden opgegeven, zoals 25
(start
) en 32
(stop
), genereert range()
een reeks van 25
tot 31
(omdat de stop
-waarde niet wordt opgenomen in de reeks).
# Planning seasonal sale days in the last week of December for day in range(25, 32): print(f"Seasonal sale on December {day}.")
Opmerking
Met deze methode van indexeren, waarbij het laatste element wordt uitgesloten, kun je eenvoudig het aantal elementen in de reeks berekenen door het
start
-argument van hetstop
-argument af te trekken. Bijvoorbeeld,32 - 25 = 7
, wat betekent dat er 7 elementen in de reeks zijn.
Drie Argumenten
Door een derde argument toe te voegen aan range()
, introduceer je een step
-waarde, die de stapgrootte tussen elk getal in de reeks bepaalt.
In dit voorbeeld neemt range()
de waarden 1
(start
), 13
(stop
) en 3
(step
), wat resulteert in de getallen 1, 4, 7, 10
. Deze kunnen de starturen van personeelsdiensten tijdens een werkdag van 12 uur voorstellen.
# 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}.")
Voorbeeldtoepassing
Met de functie range()
kunnen we taken voor elke dag van de week inplannen om ervoor te zorgen dat alle afdelingen van de winkel worden gedekt.
Deze lus wordt 7 keer uitgevoerd omdat range(7)
de getallen van 0
tot 6
genereert (in totaal 7 elementen). In elke iteratie krijgt de variabele day
een waarde van 0
tot 6
, die vervolgens wordt gebruikt om elementen uit zowel de lijsten weekly_tasks
als weekdays
op te halen.
# 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
Gebruik twee lijsten — weekdays
en daily_promotions
— om de promotie die aan elke dag van de week is toegewezen te tonen.
- Gebruik een
for
-lus met de functierange()
om door de lijstindices te itereren. - Voer in elke iteratie het volgende uit:
- Haal de huidige
weekday
uit de lijstweekdays
. - Haal de bijbehorende promotie uit
daily_promotions
met dezelfde index.
- Haal de huidige
- Toon beide waarden in het opgegeven formaat.
Uitvoervereisten
- Voor elke dag tonen:
<weekday>: Promotie op <promotion>
Opmerking
Zorg ervoor dat beide lijsten hetzelfde aantal items bevatten om indexeringsfouten te voorkomen.
Oplossing
Bedankt voor je feedback!