Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Cicli While | Cicli
Introduzione a Python

book
Cicli While

I cicli while sono lo strumento principale 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 l'utilizzo dei cicli while per gestire situazioni dinamiche:

Un ciclo while in Python esegue continuamente un blocco di codice finché una condizione specificata rimane True.

Sintassi

Per iniziare un ciclo while, si definisce una variabile contatore e si utilizza la parola chiave while seguita da una condizione booleana. La condizione è seguita da due punti :, che indicano l'inizio del blocco di codice del ciclo.

Il ciclo verrà eseguito ripetutamente finché la condizione diventa False. Tipicamente, la variabile contatore viene aggiornata all'interno del ciclo per far sì che la condizione diventi False e interrompere il ciclo.

Ecco un esempio di ciclo while:

# 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
1234567891011
# 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
copy

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 risulta False.

Nota

È fondamentale aggiornare la variabile contatore all'interno del ciclo per arrivare a soddisfare la condizione di uscita dal ciclo. In caso contrario, il ciclo verrà eseguito all'infinito, impedendo l'esecuzione del codice successivo.

Applicazione d'esempio

Immagina di gestire la scorta di latte in un supermercato. Devi assicurarti che la scorta non scenda sotto un certo livello e, quando ciò accade, dovresti rifornire per mantenere il livello desiderato.

Un ciclo while è utile in questa situazione perché consente di rifornire il latte a incrementi, attraverso più iterazioni, fino a raggiungere il livello desiderato. Senza un ciclo while, dovresti calcolare la quantità esatta di latte da rifornire tutta in una volta.

Ad esempio, considera che un addetto può rifornire solo una quantità fissa di latte per ogni viaggio (ad esempio, 20 confezioni per rifornimento). Se la scorta non è completamente ripristinata, l'addetto 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.")
123456789101112131415161718
# 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.")
copy

Nota

milk_stock += restock_quantity è equivalente a milk_stock = milk_stock + restock_quantity. Si tratta semplicemente di un modo più conciso e leggibile per esprimere la stessa operazione.

Il diagramma di flusso sopra illustra la logica alla base del ciclo while utilizzato per gestire l'inventario del latte. Si noti come la variabile contatore milk_stock, che parte da 15, venga incrementata della restock_quantity a ogni iterazione del ciclo.

Il ciclo continua a essere eseguito finché milk_stock non supera la soglia min_stock di 50, momento in cui si interrompe.

Compito

Swipe to start coding

Gestione dell'inventario di un negozio di alimentari utilizzando cicli while per garantire che Bread, Eggs e Apples rispettino i livelli minimi di scorta. Le quantità di riassortimento sono memorizzate in un dizionario.

  • Utilizzare un ciclo while per verificare se "Bread" è al di sotto del livello minimo di scorta. In tal caso, aumentare la scorta utilizzando la quantità di riassortimento corrispondente dal dizionario.
  • Ripetere la stessa logica per "Eggs" e "Apples", ciascuno con il proprio ciclo while.
  • Dopo il riassortimento, scorrere il dizionario inventory con un ciclo for e stampare i livelli finali di scorta per tutti gli articoli.

Requisiti di output

  • Per ogni articolo riassortito, stampare:
    "<Item> stock is low: <$current_stock> units. Restocking..."
  • Dopo tutti i riassortimenti, stampare Final Inventory after restocking: seguito dai livelli di scorta aggiornati:
    "<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
  • Inserire una nuova riga prima dell'inventario finale utilizzando \n.
  • Utilizzare f-string per la formattazione e le virgolette singole all'interno delle stringhe tra virgolette doppie per le chiavi del dizionario.

Nota

Per evitare conflitti di sintassi nelle f-string, utilizzare le virgolette doppie attorno alla stringa e le virgolette singole all'interno: f"Bread stock is low: {inventory['Bread'][0]} units."
Utilizzare \n per iniziare una nuova riga nell'output: "First line.\nSecond line."

Soluzione

# Each item contains current stock, minimum required stock, and restock quantity
inventory = {
"Bread": [42, 60, 10], # "Item": [current stock, minimum stock, restock quantity]
"Eggs": [225, 200, 40], # Eggs are sufficiently stocked
"Apples": [9, 50, 20] # Apples need restocking
}

# Task 1: Setting up a loop to restock Bread
while inventory["Bread"][0] < inventory["Bread"][1]:
print(f"Bread stock is low: {inventory['Bread'][0]} units. Restocking...")
# Task 1: Add the restock quantity to the current Bread stock
inventory["Bread"][0] += inventory["Bread"][2]

# Task 2: Setting up a loop to restock Eggs
while inventory["Eggs"][0] < inventory["Eggs"][1]:
print(f"Eggs stock is low: {inventory['Eggs'][0]} units. Restocking...")
# Task 2: Add the restock quantity to the current Eggs stock
inventory["Eggs"][0] += inventory["Eggs"][2]

# Task 3: Setting up a loop to restock Apples
while inventory["Apples"][0] < inventory["Apples"][1]:
print(f"Apples stock is low: {inventory['Apples'][0]} units. Restocking...")
# Task 3: Add the restock quantity to the current Apples stock
inventory["Apples"][0] += inventory["Apples"][2]

# Task 4: After all restocking is complete, print the final inventory status
print("\nFinal Inventory after restocking:")
for item, stock_data in inventory.items():
print(f"{item}: {stock_data[0]} units (Minimum required: {stock_data[1]} units)")
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 2
single

single

# Each item contains current stock, minimum required stock, and restock quantity
inventory = {
"Bread": [42, 60, 10], # "Item": [current stock, minimum stock, restock quantity]
"Eggs": [225, 200, 40], # Eggs are sufficiently stocked
"Apples": [9, 50, 20] # Apples need restocking
}

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

some-alt