Cicli While
while
loop sono lo strumento chiave per gestire l'iterazione indefinita, utile in scenari in cui il numero di iterazioni non è noto in anticipo, come il monitoraggio dei livelli di inventario fino a quando non raggiungono una soglia specifica.
Guarda come Alex dimostra come utilizzare i while
loop per gestire situazioni dinamiche:
Un while
loop in Python esegue continuamente un blocco di codice finché una condizione specificata rimane True
.
Sintassi
Per avviare un while
loop, si definisce una variabile contatore e la si segue con la parola chiave while
e una condizione booleana. La condizione è seguita da due punti :
, che indicano l'inizio del blocco di codice del loop.
Il loop verrà eseguito ripetutamente fino a quando la condizione diventa False
. Tipicamente, la variabile contatore viene aggiornata all'interno del loop per rendere eventualmente la condizione False
e fermare il loop.
Prendi questo while
loop come esempio:
# Handling a queue at a grocery store checkout queue_length = 5 # Initial number of people in the queue while queue_length > 0: # Start the `while` loop as long as the queue isn't empty print(f"Current queue size: {queue_length}") # Simulate serving a customer print("Serving the next customer...") # Decrease the queue length by 1 as a customer leaves # The `-=` operator is a shortcut for `queue_length = queue_length - 1` queue_length -= 1
In questo esempio, queue_length
funge da variabile contatore, iniziando da 5
. Ad ogni iterazione del ciclo, il valore di queue_length
diminuisce di 1
fino a raggiungere 0
. A quel punto, il ciclo termina perché la condizione 0 > 0
si valuta come False
.
Nota
È cruciale aggiornare la variabile contatore all'interno del ciclo per eventualmente soddisfare la condizione per fermare il ciclo. Senza questo, il ciclo continuerà a funzionare all'infinito, impedendo l'esecuzione di qualsiasi altro codice.
Applicazione di Esempio
Immagina di gestire lo stock di latte in un negozio di alimentari. Devi assicurarti che lo stock non scenda al di sotto di un certo livello, e quando lo fa, dovresti rifornire per mantenere il livello di stock.
Un ciclo while
è utile in questa situazione perché ti permette di rifornire il latte in incrementi su diverse iterazioni fino a quando lo stock raggiunge il livello desiderato. Senza un ciclo while
, dovresti calcolare la quantità esatta di latte da rifornire tutto in una volta.
Ad esempio, considera che un lavoratore del negozio può rifornire solo una quantità fissa di latte in un viaggio (ad esempio, 20
confezioni per rifornimento). Se lo stock non è completamente rifornito, il lavoratore torna al magazzino per portare un altro lotto di latte.
# Initial amount of milk in stock milk_stock = 15 # Minimum stock level before restocking is necessary min_stock = 50 # Quantity a worker can restock at one time restock_quantity = 20 # Start the loop to restock milk until the stock exceeds the minimum required level while milk_stock < min_stock: # If the loop is running, the condition is `True`, indicating we need more milk print(f"Milk stock is low: {milk_stock} units remaining.") # Simulate the process of restocking milk print("Restocking milk...") # Increase the stock by the quantity the worker can bring in one trip milk_stock += restock_quantity # Output the final stock level after restocking is complete print(f"Milk stock updated: {milk_stock} units, which is now sufficient.")
Nota
milk_stock += restock_quantity
è equivalente amilk_stock = milk_stock + restock_quantity
. È semplicemente un modo più conciso e leggibile per esprimere la stessa operazione.
Il diagramma di flusso sopra illustra la logica dietro il ciclo while
utilizzato per gestire l'inventario del latte. Nota come la variabile contatore milk_stock
, che parte da 15
, viene incrementata dalla restock_quantity
ad ogni iterazione del ciclo.
Il ciclo continua a funzionare fino a quando milk_stock
supera la soglia min_stock
di 50
, a quel punto si ferma.
Swipe to start coding
Gestisci l'inventario di un negozio di alimentari utilizzando i cicli while per garantire che Bread
, Eggs
e Apples
raggiungano i loro livelli minimi di stock. Le quantità di rifornimento sono memorizzate in un dizionario.
- Usa un ciclo
while
per verificare se"Bread"
è al di sotto del suo stock minimo. In tal caso, aumenta il suo stock utilizzando la quantità di rifornimento corrispondente dal dizionario. - Ripeti la stessa logica per
"Eggs"
e"Apples"
, ciascuno con il proprio ciclowhile
. - Dopo il rifornimento, scorrere il dizionario
inventory
utilizzando il ciclofor
e stampare i livelli di stock finali per tutti gli articoli.
Requisiti di Output
- Per ogni articolo rifornito, stampa:
"<Item> stock is low: <$current_stock> units. Restocking..."
- Dopo tutti i rifornimenti, stampa
Final Inventory after restocking:
seguito dai livelli di stock aggiornati:
"<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
- Inserisci una nuova riga prima dell'inventario finale usando
\n
. - Usa f-strings per la formattazione e virgolette singole all'interno di stringhe tra virgolette doppie per le chiavi del dizionario.
Nota
Per evitare conflitti di sintassi negli f-strings, usa virgolette doppie attorno alla stringa e virgolette singole all'interno:
f"Bread stock is low: {inventory['Bread'][0]} units."
Usa\n
per iniziare una nuova riga nell'output:"First line.\nSecond line."
Soluzione
Grazie per i tuoi commenti!