Skip to content

Cicli while

Il ciclo while ripete un blocco di codice finché una condizione rimane vera. È diverso dal for: non sai in anticipo quante volte ripeterà, dipende da cosa succede durante l’esecuzione.

Pensa a un ascensore: le porte rimangono aperte finché non premi il pulsante di un piano. Non sai in anticipo quando lo premeranno.

while condizione:
# codice da ripetere
contatore = 1
while contatore <= 5:
print(contatore)
contatore += 1 # aumenta il contatore di 1 ogni giro

Output:

1
2
3
4
5

Come funziona:

  1. Python controlla: contatore <= 5? Sì (1 ≤ 5) → esegue il blocco
  2. Stampa 1, poi contatore diventa 2
  3. Controlla ancora: 2 <= 5? Sì → stampa 2, contatore diventa 3
  4. … e così via fino a che contatore diventa 6
  5. 6 <= 5? No → il ciclo si ferma

Se la condizione non diventa mai falsa, il ciclo non finisce mai. Il programma si blocca per sempre:

# NON eseguire questo codice!
x = 0
while x < 10:
print(x)
# manca x += 1 — x non cambia mai, la condizione è sempre vera!

Se ti capita accidentalmente, puoi fermare il programma con Ctrl+C nel terminale.

break ferma il ciclo immediatamente, anche se la condizione è ancora vera. È utile quando vuoi uscire dal ciclo in base a qualcosa che succede dentro:

while True: # questo ciclo non finirebbe mai da solo...
risposta = input("Digita 'esci' per uscire: ")
if risposta == "esci":
break # ...ma break lo ferma quando l'utente digita "esci"
print("Programma terminato.")

continue salta il resto del codice in questo giro e passa subito al prossimo controllo della condizione:

contatore = 0
while contatore < 10:
contatore += 1
if contatore % 2 == 0: # se il numero è pari...
continue # ...salta la stampa e vai al giro successivo
print(contatore) # stampa solo i numeri dispari

Output:

1
3
5
7
9

Un uso classico del while: continuare a chiedere all’utente di inserire qualcosa finché non inserisce un valore accettabile.

while True:
risposta = input("Inserisci 'sì' o 'no': ")
if risposta == "" or risposta == "no":
break
print("Non ho capito, riprova.")
print(f"Hai scelto: {risposta}")
n = 5
while n > 0:
print(n)
n -= 1
print("Via!")

Output:

5
4
3
2
1
Via!
  • Usa for quando sai già su cosa vuoi iterare (una lista, un range, ecc.)
  • Usa while quando vuoi ripetere qualcosa finché una condizione cambia, senza sapere in anticipo quante volte