Ripetere con for e while
range(5) produce 0, 1, 2, 3 e 4: cinque numeri, e 5 non è uno di essi.
Esegui un ciclo di tre righe e guarda crescere total
Copia questo programma in IDLE ed eseguilo prima di leggere la spiegazione. Poi cambia la lista con i tuoi numeri ed eseguilo di nuovo.
total = 0
for n in [3, 5, 2]:
total = total + n
print(n, total)
print("done", total)3 3
5 8
2 10
done 10La riga for prende gli elementi della lista uno alla volta. Ad ogni giro, la variabile n si riferisce all'elemento successivo, e le righe rientrate sotto vengono eseguite una volta con quel valore. Un passaggio attraverso le righe rientrate si chiama iterazione. Dopo l'ultimo elemento, Python prosegue con la prima riga non rientrata, quindi "done" viene stampato una volta, alla fine. Una tabella di traccia rende chiaro lo schema.
| Passata | n | total dopo la passata | Stampato |
|---|---|---|---|
| (prima) | 0 | ||
| 1 | 3 | 3 | 3 3 |
| 2 | 5 | 8 | 5 8 |
| 3 | 2 | 10 | 2 10 |
| (dopo) | 10 | done 10 |
La variabile total si chiama accumulatore: parte da 0 prima del ciclo e raccoglie qualcosa a ogni passata. La riga total = total + n è così comune che Python ha una forma breve, total += n. Contare funziona allo stesso modo con count += 1.
range() crea i numeri per te
Per ripetere qualcosa un numero fisso di volte, cicla su range(). range(5) dà 0, 1, 2, 3, 4: parte da 0 e si ferma prima di 5, proprio come una porzione. range(1, 6) dà da 1 a 5. Un terzo numero imposta il passo, quindi range(0, 10, 2) dà i numeri pari da 0 a 8. La tabellina del 7, che ogni alunno coreano recita in seconda elementare, è un ciclo di due righe.
for i in range(1, 10):
print(7, "x", i, "=", 7 * i)7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63Un ciclo for può anche scorrere i caratteri di una stringa, il che rende facile contare le lettere.
count = 0
for ch in "banana":
if ch == "a":
count += 1
print(count)3while ripete finché una condizione resta True
Un ciclo while non ha una lista da scorrere. Controlla una condizione, esegue le righe rientrate se è True, e controlla di nuovo, ancora e ancora. Si adatta ai lavori in cui non conosci in anticipo il numero di passate, come «continua a risparmiare finché il totale arriva a 50 000 won». Qualcosa dentro il ciclo deve cambiare la condizione, o il ciclo non finisce mai. Se succede, ferma il programma con Ctrl+C.
saved = 0
weeks = 0
while saved < 50000:
saved += 12000
weeks += 1
print(weeks, saved)5 60000break esce subito da un ciclo, anche a metà. È comodo quando cerchi e puoi fermarti appena trovi ciò che vuoi. Il ciclo qui sotto si ferma al primo voto sotto 60 e non guarda mai l'88.
for s in [72, 91, 55, 88]:
if s < 60:
print("first below 60:", s)
break
print("ok", s)ok 72
ok 91
first below 60: 55| for x in ... | Esegue le righe rientrate una volta per ogni elemento |
| range(a, b) | Numeri interi da a fino a b escluso |
| while | Ripete finché la condizione è True |
| accumulatore | Una variabile che raccoglie un totale attraverso le passate |
| += | total += n è l'abbreviazione di total = total + n |
| break | Esce subito dal ciclo |
- Cosa stampa questo codice?
for i in range(3): print(i)0
1
21
2
30
1
2
33
- Cosa stampa questo codice?
total = 0 for n in range(1, 5): total += n print(total) - Cosa stampa questo codice?
print(list(range(0, 10, 3))) - Cosa stampa questo codice?
total = 0 for n in [1, 2, 3]: total += n print(total)61
3
61
2
30
1
3
- Cosa stampa questo codice?
count = 0 for ch in "seoul": if ch in "aeiou": count += 1 print(count) - Cosa stampa questo codice?
n = 1 while n < 20: n = n * 2 print(n) - Cosa stampa questo codice?
for s in [5, 8, 3, 9]: if s > 6: print(s) break - Quante volte stampa hi questo codice?
for i in range(2, 8): print("hi") - Cosa stampa questo codice?
word = "" for ch in "abc": word = ch + word print(word) - Metti le righe in ordine perché il programma stampi la somma da 1 a 100.Output
5050
- «range(1, 10) arriva fino a 10.» Si ferma prima di 10, quindi l’ultimo valore è 9. Per andare da 1 a 10, scrivi range(1, 11).
- «Il mio ciclo while va bene; ci mette solo molto tempo.» Se niente dentro il ciclo cambia la condizione, non si ferma mai. Controlla che la variabile nella condizione sia aggiornata a ogni passata, e premi Ctrl+C per fermare un ciclo fuori controllo.
- «Mettere print dentro o fuori dal ciclo non fa differenza.» Rientrato sotto il for, viene eseguito a ogni passata; al margine sinistro, viene eseguito una volta dopo il ciclo. Decidi se vuoi ogni passo o solo la risposta finale.
- for x in list: esegue le righe rientrate una volta per elemento.
- range(a, b) si ferma prima di b; range(n) va da 0 a n - 1.
- Un accumulatore parte prima del ciclo e cresce al suo interno.
- while ripete finché una condizione è True; qualcosa deve cambiarla.
- break esce subito dal ciclo.
Fonti di questo corso (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Consultato il: 2026-10-19