Nota

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

Perché unirsi?

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

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

  • Anteprime esclusive: Accedi in anteprima agli annunci di 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.

👉 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:
    Corpo del ciclo for

Qui, val è una variabile che assume il valore dell’elemento nella sequenza a ogni iterazione.

Il ciclo continua fino a raggiungere l’ultimo elemento della sequenza. Utilizza 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
La somma è 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
La somma è 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 utilizzare 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(start, stop, step_size). Se non specificato, step_size predefinito è 1.

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

Questa funzione non memorizza tutti i valori in memoria; sarebbe inefficiente. Quindi ricorda l’inizio, la fine, il passo e genera il numero successivo durante l’esecuzione.

Per forzare questa funzione a stampare 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 utilizzare range() in un ciclo for per iterare su una sequenza di numeri. Può essere combinato con la funzione len() per utilizzare l’indice per attraversare la sequenza.

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

for i in range(len(fruits)):
    print("I like", fruits[i])
>>> %Run -c $EDITOR_CONTENT
Mi piace pera
Mi piace mela
Mi piace uva

Else nel ciclo For

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

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

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

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