Funzione Range
La funzione range()
in Python è una funzione incorporata che genera una sequenza di numeri.
Viene spesso utilizzata per iterare su una sequenza con i cicli, in particolare quando è necessario eseguire un ciclo un numero specifico di volte.
Questa funzione è ideale per gestire attività che prevedono un modello di ripetizione prevedibile, come il rifornimento degli scaffali o la pianificazione delle vendite in un supermercato.
Vediamo come Alex utilizza la funzione range()
per gestire in modo efficiente le attività di routine nel nostro scenario del supermercato:
Sintassi e Argomenti
La funzione range()
può accettare fino a tre argomenti, rendendola versatile per diversi scenari di iterazione.
Ecco la sintassi generale della funzione range
:
python
start
: rappresenta il primo numero della sequenza. È opzionale e, se non viene specificato, la sequenza inizierà da0
.stop
: rappresenta l'ultimo numero della sequenza, ma la sequenza si interrompe appena prima di questo numero. Questo argomento è obbligatorio.step
: rappresenta l'incremento (o decremento) tra ciascun numero della sequenza. È opzionale e, se non viene specificato, 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 cicli.
Un solo argomento
Quando la funzione range()
viene fornita di un solo argomento, questo viene interpretato come parametro stop
.
Nel nostro esempio, genera una sequenza di 7 elementi a partire da 0
e terminando a 6
. Il ciclo itera su questi elementi, rappresentando i primi 7 giorni di apertura del negozio.
# 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, è possibile calcolare facilmente 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 di Esempio
Con la funzione range()
, possiamo programmare le attività per ogni giorno della settimana per garantire che tutte le sezioni del negozio siano coperte.
Questo ciclo si ripete 7 volte perché range(7)
crea numeri da 0
a 6
(per un totale di 7 elementi). In ogni iterazione, 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
Utilizza due liste — weekdays
e daily_promotions
— per stampare la promozione assegnata a ciascun giorno della settimana.
- Utilizza un ciclo
for
con la funzionerange()
per iterare sugli 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>: Promozione su <promotion>
Nota
Assicurati che entrambe le liste abbiano lo stesso numero di elementi per evitare errori di indicizzazione.
Soluzione
Grazie per i tuoi commenti!