Nota

Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Perché unirsi a noi?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Accedi in anteprima agli annunci dei nuovi prodotti e alle anticipazioni.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e giveaway: Partecipa a giveaway e promozioni festive.

👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

Cicli For

Il ciclo for può attraversare qualsiasi sequenza di elementi, come una lista o una stringa.

Il formato sintattico del ciclo for è il seguente:

for val in sequence:
    Body of for

Qui, val è una variabile che ottiene il valore dell’elemento nella sequenza in ciascuna iterazione.

Il ciclo continua fino a quando non raggiungiamo l’ultimo elemento della sequenza. Usa l’indentazione per separare il corpo del ciclo for dal resto del codice.

Diagramma di flusso del ciclo for

../../../_images/for_loop.png
numbers = [1, 2, 3, 4]
sum = 0

for val in numbers:
    sum = sum+val

print("The sum is", sum)
>>> %Run -c $EDITOR_CONTENT
The sum is 10

L’istruzione break

Con l’istruzione break possiamo interrompere il ciclo prima che abbia attraversato tutti gli elementi:

numbers = [1, 2, 3, 4]
sum = 0

for val in numbers:
    sum = sum+val
    if sum == 6:
        break
print("The sum is", sum)
>>> %Run -c $EDITOR_CONTENT
The sum is 6

L’istruzione continue

Con l’istruzione continue possiamo interrompere l’iterazione corrente del ciclo e continuare con la successiva:

numbers = [1, 2, 3, 4]

for val in numbers:
    if val == 3:
        continue
    print(val)
>>> %Run -c $EDITOR_CONTENT
1
2
4

La funzione range()

Possiamo usare la funzione range() per generare una sequenza di numeri. range(6) produrrà numeri tra 0 e 5 (6 numeri).

Possiamo anche definire inizio, fine e passo come range(inizio, fine, passo). Se non specificato, il passo predefinito è 1.

In un certo senso, l’oggetto range è «pigro» perché quando creiamo l’oggetto, non genera ogni numero che «contiene». Tuttavia, questo non è un iteratore perché supporta le operazioni in, len e __getitem__.

Questa funzione non memorizzerà tutti i valori in memoria; sarebbe inefficiente. Quindi ricorderà l’inizio, la fine, il passo e genererà il numero successivo durante il percorso.

Per forzare questa funzione a restituire tutti gli elementi, possiamo usare la funzione list().

print(range(6))

print(list(range(6)))

print(list(range(2, 6)))

print(list(range(2, 10, 2)))
>>> %Run -c $EDITOR_CONTENT
range(0, 6)
[0, 1, 2, 3, 4, 5]
[2, 3, 4, 5]
[2, 4, 6, 8]

Possiamo usare range() in un ciclo for per iterare su una sequenza di numeri. Può essere combinato con la funzione len() per usare l’indice e attraversare la sequenza.

fruits = ['pear', 'apple', 'grape']

for i in range(len(fruits)):
    print("I like", fruits[i])
>>> %Run -c $EDITOR_CONTENT
I like pear
I like apple
I like grape

Else nel ciclo For

Il ciclo for può anche avere un blocco else opzionale. Se gli elementi nella sequenza utilizzata per il ciclo sono esauriti, viene eseguita la parte else.

La parola chiave break può essere utilizzata per interrompere il ciclo for. In questo caso, la parte else verrà ignorata.

Pertanto, se non si verifica alcuna interruzione, verrà eseguita la parte else del ciclo for.

for val in range(5):
    print(val)
else:
    print("Finished")
>>> %Run -c $EDITOR_CONTENT
0
1
2
3
4
Finito

Il blocco else NON verrà eseguito se il ciclo viene interrotto da un’istruzione break.

for val in range(5):
    if val == 2: break
    print(val)
else:
    print("Finished")
>>> %Run -c $EDITOR_CONTENT
0
1