Il ciclo FOR in Python

L'istruzione for del linguaggio python mi permette di creare un ciclo determinato di N iterazioni.

for oggetto:
blocco istruzioni

La for legge il contenuto di un oggetto ( lista, tupla, stringhe, ecc. )

Per ogni n-esimo elemento dell'oggetto esegue il blocco di istruzioni indentate nella struttura for.

Nota. Il blocco di istruzioni non è delimitato da parentesi. Il linguaggio python usa l'indentatura significativa. E' quindi sufficiente spostare il blocco in una posizione più interna rispetto alla for.

Un esempio pratico

Per creare un ciclo con 5 iterazioni senza usare nessun oggetto, utilizzo la funzione range.

  1. for i in range(1,5):
  2. print(i)

La funzione range() crea un oggetto composto da 5 elementi.

>>> list(range(1,5))
[1, 2, 3, 4, 5]

L'istruzione for legge gli elementi al suo interno uno dopo l'altro e li salva nella variabile i.

L'output dello script è il seguente:

1
2
3
4
5

Il ciclo procede per 5 iterazioni.

Come interrompere le iterazioni

Per interrompere le iterazioni della struttura for prima del termine, posso usare le istruzioni break o continue.

  • Break. Interrompe il ciclo. Il programma salta alla prima istruzione dopo la struttura ciclica.
  • Continue. Interrompe l'iterazione corrente e salta alla successiva.

La differenza tra break e continue. Le istruzioni hanno funzioni diverse. L'istruzione break causa l'uscita dal ciclo. L'istruzione continue provoca soltanto l'uscita dall'iterazione mentre il ciclo prosegue.

Esempio 1 ( break )

  1. for i in range(1,5):
  2. if i==3: break
  3. print(i)

L'output è il seguente

1
2

Alla terza iterazione il ciclo si conclude.

Esempio 2 ( continue )

  1. for i in range(1,5):
  2. if i==3: continue
  3. print(i)

L'output è il seguente

1
2
4
5

La terza iterazione si interrompe ma il ciclo prosegue con la successiva.

Altri esempi pratici

Esempio 1

In questo script definisco un oggetto lista "stagioni" contenente i nomi delle stagioni dell'anno.

  1. stagioni=["inverno", "primavera", "estate", "autunno"]
  2. for n in stagioni:
  3. print(n)

L'istruzione for legge ogni elemento della lista e lo registra nella variabile n.

Poi l'istruzione print stampa il valore della variabile n.

L'output del programma è il seguente

inverno
primavera
estate
autunno

Esempio 2

Questo script è simile al precedente ma utilizzo la funzione enumerate() per contare i cicli.

  1. stagioni=["inverno", "primavera", "estate", "autunno"]
  2. for n, v in enumerate(stagioni):
  3. print(n, v)

La for assegna il contatore numerico (enumerate) e il valore del relativo elemento della lista alle variabili n e z.

Poi le stampa.

L'output è il seguente

0 inverno
1 primavera
2 estate
3 autunno

Esempio 3

Questa for scorre i caratteri nella stringa "Roma" e li stampa sullo schermo.

  1. city="Roma"
  2. for n in city:
  3. print(n)

L'output dello script è il seguente:

R
o
m
a

Esempio 4

Per creare un ciclo con decremento da 5 a 1 utilizzo la funzione range() con passo negativo.

  1. for i in range(5,0,-1):
  2. print(i)

In questo caso la lista è composta da [5, 4, 3, 2, 1]. Stessi numeri ma ordine opposto.

L'output dello script è il seguente:

5
4
3
2
1

Il ciclo procede per 5 iterazioni a ritroso.

Esempio 5

In questo esempio creo un ciclo con passo doppio.

  1. for i in range(1,10,2):
  2. print(i)

L'output è il seguente:

1
3
5
7
9

Esempio 6

In questo esempio creo una variabile dizionario e la leggo con l'istruzione for.

  1. dizionario=dict()
  2. dizionario['it']='italian'
  3. dizionario['en']='english'
  4. for n,z in dizionario.items():
  5. print(n,z)

Il metodo item() restituisce la sequenza di tuple ( chiave, valore ) del dizionario.

In ogni iterazione la for assegna la chiave e il valore alle variabili n e z. Poi le stampa.

L'output è il seguente:

it italian
en english

Esempio 7

In questo esempio uso la funzione zip() per associare due vettori diversi.

  1. stag_it=["inverno", "primavera", "estate", "autunno"]
  2. stag_en=["winter", "spring", "summer", "autumn"]
  3. for n,z in zip(stag_it, stag_en):
  4. print(n,z)

Il metodo zip() associa gli elementi dei vettori che hanno la stessa posizione.

A ogni iterazione la for assegna i due elementi alle variabili n e z. Poi le stampa.

L'output è il seguente:

inverno winter
primavera spring
estate summer
autunno autumn

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Le strutture cicliche in Python

Le interruzioni forzate