Cicli For
Benvenuti nella sezione dedicata ai loop!
In questo capitolo, esploreremo come i loop servano come strumento chiave per automatizzare compiti ripetitivi e siano essenziali per gestire in modo efficiente liste e altri tipi di dati iterabili.
Unisciti ad Alex mentre dimostra l'uso dei cicli for
per semplificare le operazioni nel nostro negozio di alimentari:
L'uso dei cicli for
in Python ti permette di eseguire un blocco di codice ripetutamente per ogni elemento in una collezione (oggetto iterabile). Ecco cosa devi sapere sui cicli for
:
Sintassi
Inizia un ciclo for
con la parola chiave for
, seguita da un nome di variabile come item
per rappresentare ogni elemento nella sequenza. Questo è seguito dalla parola chiave in
e poi dall'oggetto iterabile come groceryItems
. Il blocco di codice all'interno del ciclo viene eseguito una volta per ogni elemento.
In questo esempio, item
agisce come la variabile iteratrice che accede sequenzialmente a ciascun elemento nella lista groceryItems
ed esegue la funzione print()
per ognuno:
groceryItems = ["milk", "eggs", "cheese", "butter"] for item in groceryItems: # Code to be executed print(item)
Iterazione si riferisce al processo di esecuzione di un blocco di codice ripetutamente. Python supporta due tipi principali di iterazione:
Iterazione Definita
Dove il numero di iterazioni è conosciuto in anticipo. I cicli for
sono un classico esempio, si fermano automaticamente quando raggiungono la fine della sequenza.
Iterazione Indefinita
In cui l'esecuzione continua fino a quando non viene soddisfatta una condizione specifica, tipicamente gestita dai cicli while
, che saranno esplorati in dettaglio nel prossimo capitolo.
Esempi di Applicazioni
I cicli for
in Python possono essere utilizzati con qualsiasi oggetto iterabile (lists
, tuples
, dictionaries
, strings
), permettendo la manipolazione dei dati su base per elemento.
Che tu abbia bisogno di accedere agli elementi in una lista, alle chiavi o ai valori in un dizionario, o ai caratteri in una stringa, i cicli for
forniscono una sintassi chiara che semplifica il codice per compiti ripetitivi.
Ecco come puoi usare un ciclo for
per iterare sugli elementi in una stringa e una tupla, simile a come abbiamo 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, iterare direttamente sul dizionario farà scorrere le sue chiavi per impostazione predefinita.
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 usare il metodo values()
.
Questo è utile per operazioni che richiedono l'accesso ai valori senza dover 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 hai bisogno di accedere contemporaneamente alle chiavi e ai valori, il metodo items()
ti consente di scorrere le coppie chiave-valore in un dizionario.
Per utilizzare questo metodo in un ciclo for
, specifichiamo 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 posiziona 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.
Basandosi sulla tua conoscenza di if/else
, operatori booleani e cicli for
, possiamo 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
Potresti notare che abbiamo inserito istruzioni
if
all'interno del ciclofor
, il che ha aggiunto ulteriore indentazione al bloccoif
. Come menzionato in precedenza, ogni blocco di codice indentato può essere trattato come indipendente, indipendentemente da dove è posizionato. La chiave è assicurarsi che l'indentazione sia coerente e corretta tra di loro.
Swipe to start coding
Gestisci le scorte e le promozioni in un negozio di alimentari scorrendo l'inventario, controllando le condizioni di riordino e applicando le promozioni.
- Scorri ogni prodotto nel dizionario
inventory
. - All'interno del ciclo, ottieni il
current_stock
e ilmin_stock
dalla lista dell'inventario. - Usa un'istruzione
if
per verificare se lo stock attuale è minore o uguale allo stock minimo:- In tal caso, stampa un messaggio di riordino, aumenta lo stock di
20
, aggiorna l'inventario e stampa il messaggio di aggiornamento.
- In tal caso, stampa un messaggio di riordino, aumenta lo stock di
- Usa un'altra istruzione
if
per verificare se il prodotto esiste nel dizionariopromotions
.
Requisiti di Output
Per ogni articolo, stampa:
-
--- Processing: <item> ---
-
Se è necessario il riordino:
<item> necessita di riordino. Stock attuale: <current_stock>. Minimo richiesto: <min_stock>
Stock aggiornato per <item>: <updated_stock>
-
Se esiste una promozione:
Promozione per <item>: <promotion_details>
-
In caso contrario:
Nessuna promozione per <item>
Soluzione
Grazie per i tuoi commenti!