I cicli permettono di ripetere un blocco di codice più volte — senza riscriverlo. In Python esistono due tipi: il ciclo for, usato per iterare su sequenze, e il ciclo while, che continua finché una condizione è vera.
Il ciclo for
Il ciclo for itera su ogni elemento di una sequenza — una lista, una stringa, un range di numeri. Per ogni elemento esegue il blocco di codice indentato.
# Iterare su una lista linguaggi = ["Python", "Java", "JavaScript"] for lang in linguaggi: print(f"Imparo {lang}") # Output: # Imparo Python # Imparo Java # Imparo JavaScript # Iterare su una stringa (carattere per carattere) for lettera in "Python": print(lettera, end="-") # Output: P-y-t-h-o-n-
La funzione range()
Quando hai bisogno di ripetere qualcosa un numero preciso di volte, usi range() che genera una sequenza di numeri interi.
# range(stop) — da 0 a stop-1 for i in range(5): print(i) # 0, 1, 2, 3, 4 # range(start, stop) — da start a stop-1 for i in range(1, 6): print(i) # 1, 2, 3, 4, 5 # range(start, stop, step) — con passo for i in range(0, 20, 5): print(i) # 0, 5, 10, 15 # Contare al contrario for i in range(10, 0, -1): print(i) # 10, 9, 8 ... 1
Il ciclo while
Il ciclo while continua a eseguire il blocco finché la condizione è vera. È utile quando non sai in anticipo quante volte devi ripetere.
# Conto alla rovescia contatore = 5 while contatore > 0: print(f"{contatore}...") contatore -= 1 # equivale a: contatore = contatore - 1 print("Via!") # Indovina il numero numero = 42 tentativo = 0 while tentativo != numero: tentativo = int(input("Indovina: ")) print("Bravo!")
while non diventa mai False, il programma non si ferma mai. Assicurati sempre che il ciclo abbia una via d’uscita — che la variabile di controllo venga modificata dentro il ciclo.
break e continue
# break — esce immediatamente dal ciclo for i in range(10): if i == 5: break # esce quando i vale 5 print(i) # stampa 0, 1, 2, 3, 4 # continue — salta all'iterazione successiva for i in range(10): if i % 2 == 0: continue # salta i pari print(i) # stampa 1, 3, 5, 7, 9
enumerate() e zip()
# enumerate() — indice + valore linguaggi = ["Python", "Java", "JavaScript"] for i, lang in enumerate(linguaggi, 1): print(f"{i}. {lang}") # 1. Python 2. Java 3. JavaScript # zip() — itera su due liste in parallelo nomi = ["Marco", "Sara", "Luca"] voti = [8, 9, 7] for nome, voto in zip(nomi, voti): print(f"{nome}: {voto}")
for quando sai quante iterazioni fare o devi scorrere una sequenza. Usa while quando continui finché una condizione cambia — es. input utente, lettura file, attesa di un evento.