Funzione Range
La funzione range()
in Python è una funzione incorporata che genera una sequenza di numeri.
È spesso utilizzata per iterare su una sequenza con cicli, in particolare quando è necessario eseguire un ciclo un numero specifico di volte.
Questo è ideale per gestire compiti che coinvolgono un modello di ripetizione prevedibile, come rifornire gli scaffali o programmare le vendite in un contesto di negozio di alimentari.
Vediamo come Alex utilizza la funzione range()
per gestire efficacemente i compiti di routine nel nostro scenario di negozio di alimentari:
Sintassi e Argomenti
La funzione range()
può accettare fino a tre argomenti, rendendola versatile per vari scenari di loop.
Ecco la sintassi generale per la funzione range
:
python
start
: questo è il primo numero della sequenza. È opzionale , e se non lo includi, la sequenza inizierà da0
.stop
: questo è l' ultimo numero della sequenza, ma la sequenza si fermerà appena prima di questo numero . Questo argomento è obbligatorio .step
: questo è l' incremento (o decremento) tra ciascun numero nella sequenza. È opzionale , e se non lo includi, la sequenza aumenterà di1
ogni volta.
Ora che hai compreso la sintassi della funzione range()
, esploriamo alcuni esempi per vedere come ciascun argomento — start
, stop
e step
— influenzi il comportamento dei loop.
Un Singolo Argomento
Quando alla funzione range()
viene dato un singolo argomento, lo tratta come il parametro stop
.
Nel nostro esempio, genera una sequenza di 7 elementi a partire da 0
e terminando a 6
. Il loop itera su questi elementi, rappresentando i primi 7 giorni in cui il negozio è aperto.
# 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}.")
Nota
La sequenza inizia da
0
e termina a6
. Questo accade perché Python spesso inizia a contare da0
, il che riduce la necessità di regolare l'indicizzazione in molte situazioni.
Due Argomenti
Quando vengono forniti due argomenti, come 25
(start
) e 32
(stop
), range()
genera una sequenza da 25
a 31
(poiché il valore stop
è escluso dalla sequenza).
# Planning seasonal sale days in the last week of December for day in range(25, 32): print(f"Seasonal sale on December {day}.")
Nota
Con questo metodo di indicizzazione, dove l'elemento finale è escluso, puoi facilmente calcolare il numero di elementi nella sequenza sottraendo l'argomento
start
dall'argomentostop
. Ad esempio,32 - 25 = 7
, il che significa che ci sono 7 elementi nella sequenza.
Tre Argomenti
Aggiungendo un terzo argomento a range()
, si introduce un valore step
, che definisce l'incremento tra ciascun numero nella sequenza.
In questo esempio, range()
prende 1
(start
), 13
(stop
) e 3
(step
), producendo i numeri 1, 4, 7, 10
. Questi possono rappresentare le ore di inizio dei turni del personale durante una giornata lavorativa di 12 ore.
# 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}.")
Applicazione Esempio
Con la funzione range()
, possiamo programmare compiti per ogni giorno della settimana per assicurarci che tutte le sezioni del negozio siano coperte.
Questo ciclo si esegue 7 volte perché range(7)
crea numeri da 0
a 6
(un totale di 7 elementi). In ogni ciclo, la variabile day
assume un valore da 0
a 6
, che viene poi utilizzato per accedere agli elementi delle liste weekly_tasks
e 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
Usa due liste — weekdays
e daily_promotions
— per stampare la promozione assegnata a ciascun giorno della settimana.
- Usa un ciclo
for
con la funzionerange()
per iterare attraverso gli indici delle liste. - In ogni iterazione:
- Ottieni il
weekday
corrente dalla listaweekdays
. - Ottieni la promozione corrispondente da
daily_promotions
usando lo stesso indice.
- Ottieni il
- Stampa entrambi i valori nel formato specificato.
Requisiti di Output
- Per ogni giorno, stampa:
<weekday>: Promotion on <promotion>
Nota
Assicurati che entrambe le liste abbiano lo stesso numero di elementi per evitare errori di indicizzazione.
Soluzione
Grazie per i tuoi commenti!