Salta ai contenuti
Manuale LogoManuale Logo

Cicli while

Il ciclo while ripete un blocco di codice finché una condizione rimane vera. A differenza del for, non richiede di conoscere in anticipo il numero di iterazioni.

Puoi pensare a una porta che resta aperta finché non si verifica una certa condizione.

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

Il ciclo procede così:

  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 termina e il programma continua a eseguirlo:

# 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 subito il ciclo, anche se la condizione è ancora vera. È utile quando la decisione di uscire dipende dal contenuto del ciclo:

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 dell’iterazione e passa al controllo successivo 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 comune di while è ripetere una richiesta finché l’utente 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