Introduzione
I loop sono uno dei concetti fondamentali dei linguaggi di programmazione. I loop vengono utilizzati per eseguire attività ripetute fino a quando non viene soddisfatta una determinata condizione.
Ci sono due principali costrutti di loop in Python che ti permettono di ripetere ripetutamente un blocco di codice, il ciclo for
e il ciclo while
.
In questo articolo, tratteremo le basi dei loop for
in Python. Ti mostreremo anche come usare il tipo range
per generare una sequenza di numeri, e le istruzioni else
, break
e continue
per alterare il flusso di un ciclo.
For loop in Python
Il ciclo for
in Python itera sugli elementi di una sequenza ed esegue ripetutamente un blocco di istruzioni.
Il ciclo for
Python assume la seguente forma:
for item in sequence:
statements
L'istruzione for
inizia con la parola chiave for
, quindi una variabile (item
) a cui assegnare ciascun elemento della sequenza (destinazione del controllo del ciclo), seguita dalla parola chiave in
e infine dalla sequenza. Ogni istruzione condizionale termina con due punti (:
).
Il blocco statements
inizia con un indentation (rientro) e termina con la prima riga unindented (non rientrata). La maggior parte delle persone sceglie di utilizzare l'indentation di 4 o 2 spazi. La Guida allo stile ufficiale per il codice Python consiglia di utilizzare 4 spazi per livello di indentation e di evitare di mescolare l'uso di tabulazioni e spazi.
Ecco un esempio:
berries = ["Blueberry", "Raspberry", "Strawberry"]
for berry in berries:
print(berry)
Blueberry
Raspberry
Strawberry
Puoi iterare su qualsiasi sequenza come una stringa, un elenco, un dizionario o una tupla.
Nel codice seguente, stiamo iterando attraverso i caratteri nella stringa "linux":
for x in 'linux':
print(x)
l
i
n
u
x
Quando si scorre un dizionario, la variabile viene assegnata alla chiave:
berries = {'Blueberry': 100, 'Raspberry': 125, 'Strawberry': 150}
for key in berries:
print(key)
Blueberry
Raspberry
Strawberry
Per accedere ai valori del dizionario, usa l'indice della chiave:
berries = {'Blueberry': 100, 'Raspberry': 125, 'Strawberry': 150}
for key in berries:
print(berries[key])
Un'altra opzione per scorrere i valori del dizionario è utilizzare il metodo values()
:
berries = {'Blueberry': 100, 'Raspberry': 125, 'Strawberry': 150}
for value in berries.values():
print(value)
L'output di entrambi gli esempi è lo stesso:
100
125
150
Il Costruttore range()
Il costruttore range()
in Python consente di generare una sequenza di numeri interi definendo il punto iniziale e finale dell'intervallo. range()
funziona in modo diverso in Python 2 e 3. In questo articolo, stiamo usando Python 3.
range()
viene tipicamente utilizzato con il ciclo for
per iterare su una sequenza di numeri. Questo è un equivalente in Python del ciclo for
in stile C.
Quando viene fornito un solo argomento, range
restituisce una sequenza di numeri, incrementata di 1, a partire da 0 a argument - 1
:
for i in range(3):
print(i)
0
1
2
Quando vengono forniti due argomenti, range
restituisce una sequenza di numeri, incrementata di 1, a partire dal primo argomento fino a second argument - 1
:
for i in range(3, 5):
print(i)
3
4
Il terzo argomento consente di specificare un incremento:
for i in range(0, 16, 5):
print(i)
0
5
10
15
Ciclo for nested (annidato)
Un ciclo annidato è un ciclo all'interno di un altro ciclo. Sono spesso usati per gestire oggetti iterabili che contengono elementi iterabili:
for i in range(0, 6):
for j in range(0, 6):
print('%d + %d = %d' % (i, j, i+j))
0 + 0 = 0
0 + 1 = 1
0 + 2 = 2
...
5 + 3 = 8
5 + 4 = 9
5 + 5 = 10
Le dichiarazioni break e continue
Le istruzioni break
e continue
consentono di controllare l'esecuzione del ciclo for
.
Dichiarazione Break
L'istruzione break
termina il ciclo corrente e passa il controllo del programma all'istruzione che segue il ciclo. Quando viene utilizzata all'interno di un ciclo annidato, l'istruzione break
termina il ciclo più interno.
Nell'esempio seguente, stiamo usando l'istruzione if
per terminare l'esecuzione del ciclo una volta che l'elemento corrente iterato è uguale a "Raspberry":
for i in ["Blueberry", "Raspberry", "Strawberry"]:
if i == "Raspberry":
break
print(i)
Blueberry
Dichiarazione Continue
L'istruzione continue
esce dall'iterazione corrente del ciclo e passa il controllo del programma all'iterazione successiva del ciclo. Il ciclo non è terminato; viene saltata solo l'iterazione corrente.
Nell'esempio seguente, stiamo iterando attraverso un intervallo di numeri. Quando l'elemento corrente iterato è uguale a '3', l'istruzione continue
farà tornare l'esecuzione all'inizio del ciclo e continuare con l'iterazione successiva:
for i in range(1, 6):
if i == 3:
continue
print(i)
1
2
4
5
La clausola Else
In Python, il ciclo for
può avere una clausola opzionale else
.
La clausola else
viene eseguita quando il ciclo termina normalmente, ovvero quando tutti gli iterabili sono esauriti:
for i in ["Blueberry", "Raspberry", "Strawberry"]:
print(i)
else:
print('Loop completed.')
Blueberry
Raspberry
Strawberry
Loop completed.
Quando il ciclo viene terminato con le istruzioni break
o continue
, la clausola else
non viene eseguita:
for i in ["Blueberry", "Raspberry", "Strawberry"]:
if i == "Raspberry":
break
print(i)
else:
print('Loop completed.')
Blueberry
Conclusione
Il ciclo for
Python viene utilizzato per eseguire ripetutamente un blocco di codice per un numero fisso di volte.