Cicli For
Benvenuto nella sezione dedicata ai cicli!
In questo capitolo, approfondiremo come i cicli rappresentino uno strumento fondamentale per automatizzare compiti ripetitivi e siano essenziali per gestire in modo efficiente liste e altri tipi di dati iterabili.
Segui Alex mentre dimostra l'utilizzo dei cicli for
per semplificare le operazioni nel nostro negozio di alimentari:
L'utilizzo dei cicli for
in Python consente di eseguire un blocco di codice ripetutamente per ogni elemento di una collezione (oggetto iterabile). Ecco cosa è importante sapere sui cicli for
:
Sintassi
Un ciclo for
si avvia con la parola chiave for
, seguita da un nome di variabile come item
per rappresentare ciascun elemento nella sequenza. Segue la parola chiave in
e poi l'oggetto iterabile, ad esempio groceryItems
. Il blocco di codice all'interno del ciclo viene eseguito una volta per ogni elemento.
In questo esempio, item
funge da variabile iteratrice che accede sequenzialmente a ciascun elemento della lista groceryItems
ed esegue la funzione print()
per ognuno di essi:
groceryItems = ["milk", "eggs", "cheese", "butter"] for item in groceryItems: # Code to be executed print(item)
Iterazione indica il processo di esecuzione ripetuta di un blocco di codice. Python supporta due principali tipi di iterazione:
Iterazione Definita
Quando il numero di iterazioni è conosciuto in anticipo. I cicli for
sono un esempio classico, interrompendosi automaticamente quando raggiungono la fine della sequenza.
Iterazione Indefinita
In cui l'esecuzione continua fino al verificarsi di una condizione specifica, tipicamente gestita dai cicli while
, che saranno approfonditi nel prossimo capitolo.
Applicazioni di Esempio
I cicli for
in Python possono essere utilizzati con qualsiasi oggetto iterabile (lists
, tuples
, dictionaries
, strings
), consentendo la manipolazione dei dati elemento per elemento.
Che si tratti di accedere agli elementi di una lista, alle chiavi o ai valori di un dizionario, o ai caratteri di una stringa, i cicli for
offrono una sintassi chiara che semplifica il codice per attività ripetitive.
Ecco come è possibile utilizzare un ciclo for
per iterare sugli elementi di una stringa e di una tupla, in modo simile a quanto visto con le liste:
# Print each letter in the string vegetable = "Carrot" for letter in vegetable: print(letter) # Tuple containing different categories of the grocery store categories = ("Produce", "Bakery", "Meat", "Dairy") for category in categories: print(category)
Quando si utilizza un ciclo for
con un dizionario, l'iterazione diretta sul dizionario cicla per impostazione predefinita sulle sue chiavi.
Ecco cosa aspettarsi quando si itera direttamente su un dizionario:
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print each dictionary key print("Product list:") for product in productStock: print(product)
Nota come la variabile iteratore product
accede solo alle chiavi del dizionario.
Per iterare sui valori di un dizionario, puoi utilizzare il metodo values()
.
Questo è utile per operazioni che richiedono l'accesso ai valori senza la necessità di fare riferimento alle chiavi:
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print each dictionary value print("Stock counts:") for stock in productStock.values(): print(stock)
Se è necessario accedere contemporaneamente alle chiavi e ai valori, il metodo items()
consente di scorrere le coppie chiave-valore in un dizionario.
Per utilizzare questo metodo in un ciclo for
, si specificano due variabili prima della parola chiave in
— una per la chiave (product
) e una per il valore (stock
):
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print both the key and value for each dictionary item print("Inventory details:") for product, stock in productStock.items(): print(f"{product} has {stock} units in stock.")
Nota
In questo esempio, utilizziamo le f-string (note anche come stringhe letterali formattate) per inserire direttamente le variabili nelle stringhe. La sintassi è semplice: aggiungi una
f
prima del segno di apertura delle virgolette"
e inserisci variabili o espressioni tra parentesi graffe{}
all'interno della stringa. Questo metodo rende la combinazione di stringhe e variabili nelle istruzioni di stampa molto più leggibile, quindi vale la pena impararlo.
Sfruttando la conoscenza di if/else
, operatori booleani e cicli for
, è possibile eseguire un semplice controllo dell'inventario su un dizionario:
# Product names as keys and their stock levels as values inventory = { "milk": 120, "eggs": 30, "bread": 80, "apples": 10 } # The threshold stock level that triggers a restock minimum_stock = 50 # Evaluating stock levels and deciding if restocking is necessary print("Checking inventory status:") for product, quantity in inventory.items(): if quantity < minimum_stock: print(f"{product} requires restocking. Only {quantity} units remain.") else: print(f"{product} has adequate stock with {quantity} units available.")
Nota
Si può notare che sono stati inseriti degli
if
all'interno del ciclofor
, il che ha aggiunto un'ulteriore indentazione al bloccoif
. Come già menzionato, ogni blocco di codice indentato può essere considerato indipendente, indipendentemente dalla sua posizione. L'importante è assicurarsi che l'indentazione sia coerente e corretta tra i vari blocchi.
Swipe to start coding
Gestione delle scorte e delle promozioni in un negozio di alimentari tramite l'iterazione sull'inventario, il controllo delle condizioni di riordino e l'applicazione delle promozioni.
- Iterare su ciascun prodotto nel dizionario
inventory
. - All'interno del ciclo, ottenere
current_stock
emin_stock
dalla lista dell'inventario. - Utilizzare un'istruzione
if
per verificare se la scorta attuale è minore o uguale alla scorta minima:- In tal caso, stampare un messaggio di riordino, aumentare la scorta di
20
, aggiornare l'inventario e stampare il messaggio di aggiornamento.
- In tal caso, stampare un messaggio di riordino, aumentare la scorta di
- Utilizzare un'altra istruzione
if
per verificare se il prodotto esiste nel dizionariopromotions
.
Requisiti di output
Per ogni articolo, stampare:
-
--- Processing: <item> ---
-
Se è necessario il riordino:
<item> needs restocking. Current stock: <current_stock>. Minimum required: <min_stock>
Updated stock for <item>: <updated_stock>
-
Se esiste una promozione:
Promotion for <item>: <promotion_details>
-
Altrimenti:
No promotions for <item>
Soluzione
Grazie per i tuoi commenti!