Per i cicli
Ultimo aggiornamento il 2025-11-06 | Modifica questa pagina
Panoramica
Domande
- Come posso fare in modo che un programma faccia molte cose contemporaneamente?
Obiettivi
- Spiegare a cosa servono normalmente i cicli for.
- Tracciare l’esecuzione di un ciclo semplice (non annidato) e indicare correttamente i valori delle variabili in ogni iterazione.
- Scrivere cicli for che utilizzano lo schema Accumulator per aggregare valori.
Un ciclo for esegue i comandi una volta per ogni valore di un insieme.
- Fare calcoli sui valori di un elenco uno per uno è doloroso come
lavorare con
pressure_001,pressure_002, ecc. - Un ciclo for dice a Python di eseguire alcune istruzioni una volta per ogni valore di una lista, di una stringa di caratteri o di un altro insieme.
- “per ogni cosa in questo gruppo, fare queste operazioni”
- Questo ciclo
forè equivalente a:
- E l’output del ciclo
forè:
OUTPUT
2
3
5
Un ciclo for è composto da un insieme, una variabile
del ciclo e un corpo.
- L’insieme,
[2, 3, 5], è quello su cui viene eseguito il ciclo. - Il corpo,
print(number), specifica cosa fare per ogni valore dell’insieme. - La variabile del ciclo,
number, è quella che cambia a ogni iterazione del ciclo.- La “cosa corrente”.
La prima riga del ciclo for deve terminare con i due
punti e il corpo deve essere indentato.
- I due punti alla fine della prima riga indicano l’inizio di un blocco di istruzioni.
- Python usa l’indentazione piuttosto che
{}obegin/endper mostrare il nesting.- Qualsiasi rientro coerente è legale, ma quasi tutti usano quattro spazi.
ERRORE
IndentationError: expected an indented block
- L’indentazione è sempre significativa in Python.
ERRORE
File "<ipython-input-7-f65f2962bf9c>", line 2
lastName = "Smith"
^
IndentationError: unexpected indent
- Questo errore può essere risolto rimuovendo gli spazi extra all’inizio della seconda riga.
Le variabili di loop possono essere chiamate in qualsiasi modo.
- Come tutte le variabili, le variabili del ciclo sono:
- Create su richiesta.
- Senza senso: i loro nomi possono essere qualsiasi cosa.
Il corpo di un ciclo può contenere molte istruzioni.
- Ma nessun ciclo dovrebbe essere lungo più di qualche riga.
- È difficile per gli esseri umani tenere a mente pezzi di codice più grandi.
OUTPUT
2 4 8
3 9 27
5 25 125
Usare range per iterare su una sequenza di numeri.
- La funzione built-in
rangeproduce una sequenza di numeri.- Non un elenco: i numeri sono prodotti su richiesta per rendere più efficiente il looping su intervalli di grandi dimensioni.
-
range(N)sono i numeri 0..N-1- Esattamente gli indici legali di un elenco o di una stringa di caratteri di lunghezza N
OUTPUT
a range is not a list: range(0, 3)
0
1
2
Lo schema Accumulatore trasforma molti valori in uno.
- Uno schema comune nei programmi è quello di:
- Inizializza una variabile accumulatore a zero, alla stringa vuota o all’elenco vuoto.
- Aggiorna la variabile con i valori di un insieme.
PYTHON
# Sum the first 10 integers.
total = 0
for number in range(10):
total = total + (number + 1)
print(total)
OUTPUT
55
- Leggere
total = total + (number + 1)come:- aggiunge 1 al valore corrente della variabile del ciclo
number. - Aggiungetelo al valore corrente della variabile accumulatore
total. - Assegna questo valore a
total, sostituendo il valore corrente.
- aggiunge 1 al valore corrente della variabile del ciclo
- Dobbiamo aggiungere
number + 1perchérangeproduce 0..9, non 1..10.
Classificazione degli errori
Un errore di indentazione è un errore di sintassi o un errore di runtime?
Un IndentationError è un errore di sintassi. I programmi con errori di sintassi non possono essere avviati. Un programma con un errore di runtime verrà avviato, ma in determinate condizioni verrà lanciato un errore.
| Line no | Variables |
|---|---|
| 1 | total = 0 |
| 2 | total = 0 char = ‘t’ |
| 3 | total = 1 char = ‘t’ |
| 2 | total = 1 char = ‘i’ |
| 3 | total = 2 char = ‘i’ |
| 2 | total = 2 char = ‘n’ |
| 3 | total = 3 char = ‘n’ |
Pratica di Accumulazione (continued)
Creare un acronimo: Partendo dalla lista
["red", "green", "blue"], creare l’acronimo
"RGB" usando un ciclo for.
Consiglio: Potrebbe essere necessario utilizzare un metodo stringa per formattare correttamente l’acronimo.
Somma cumulativa
Riordinate e indentate correttamente le righe di codice sottostanti
in modo da stampare una lista con la somma cumulativa dei dati. Il
risultato dovrebbe essere [1, 3, 5, 10].
Errori di identificazione del nome della variabile
- Leggete il codice qui sotto e cercate di identificare gli errori senza eseguirlo.
- Eseguite il codice e leggete il messaggio di errore. Che tipo di
NameErrorpensate che sia? Si tratta di una stringa senza virgolette, di una variabile scritta male o di una variabile che avrebbe dovuto essere definita ma non lo è stata? - Correggere l’errore.
- Ripetete i passi 2 e 3, finché non avete risolto tutti gli errori.
- I nomi delle variabili Python sono sensibili alle maiuscole e alle
minuscole:
numbereNumbersi riferiscono a variabili diverse. - La variabile
messagedeve essere inizializzata come una stringa vuota. - Vogliamo aggiungere la stringa
"a"amessage, non la variabile indefinitaa.
Identificazione degli errori degli elementi
- Un ciclo for esegue i comandi una volta per ogni valore di un insieme.
- Un ciclo
forè composto da un insieme, una variabile del ciclo e un corpo. - La prima riga del ciclo
fordeve terminare con i due punti e il corpo deve essere indentato. - L’indentazione è sempre significativa in Python.
- Le variabili del loop possono essere chiamate in qualsiasi modo (ma si consiglia vivamente di dare un nome significativo).
- Il corpo di un ciclo può contenere molte istruzioni.
- Usare
rangeper iterare su una sequenza di numeri. - Lo schema Accumulatore trasforma molti valori in uno.