Python 3 - Loops
In generale, le istruzioni vengono eseguite in sequenza: la prima istruzione in una funzione viene eseguita per prima, seguita dalla seconda e così via. Potrebbe esserci una situazione in cui è necessario eseguire un blocco di codice più volte.
I linguaggi di programmazione forniscono varie strutture di controllo che consentono percorsi di esecuzione più complicati.
Un'istruzione loop ci consente di eseguire un'istruzione o un gruppo di istruzioni più volte. Il diagramma seguente illustra un'istruzione loop:
Il linguaggio di programmazione Python fornisce i seguenti tipi di loop per gestire i requisiti di loop.
Sr.No. | Tipo e descrizione del loop |
---|---|
1 | while loop
Ripete un'istruzione o un gruppo di istruzioni mentre una determinata condizione è VERA. Verifica la condizione prima di eseguire il corpo del ciclo. |
2 | per loop
Esegue una sequenza di istruzioni più volte e abbrevia il codice che gestisce la variabile del ciclo. |
3 |
loop annidati
Puoi usare uno o più loop all'interno di un altro while o for. |
Dichiarazioni di controllo del loop
Le istruzioni di controllo Loop cambiano l'esecuzione dalla sua sequenza normale. Quando l'esecuzione esce da un ambito, tutti gli oggetti automatici creati in tale ambito vengono eliminati.
Python supporta le seguenti istruzioni di controllo.
Sr.No. | Dichiarazione di controllo e descrizione |
---|---|
1 |
dichiarazione di interruzione
Termina l'istruzione loop e trasferisce l'esecuzione all'istruzione immediatamente successiva al loop. |
2 |
continua dichiarazione
Fa sì che il ciclo salti il resto del suo corpo e ritorni immediatamente le sue condizioni prima di ripetere. |
3 |
dichiarazione di passaggio
L'istruzione pass in Python viene utilizzata quando un'istruzione è richiesta sintatticamente ma non si desidera eseguire alcun comando o codice. |
Esaminiamo brevemente le istruzioni di controllo del ciclo.
Iteratore e generatore
Iteratorè un oggetto che consente a un programmatore di attraversare tutti gli elementi di una raccolta, indipendentemente dalla sua specifica implementazione. In Python, un oggetto iteratore implementa due metodi,iter() e next().
Gli oggetti String, List o Tuple possono essere utilizzati per creare un Iteratore.
list = [1,2,3,4]
it = iter(list) # this builds an iterator object
print (next(it)) #prints next available element in iterator
Iterator object can be traversed using regular for statement
!usr/bin/python3
for x in it:
print (x, end=" ")
or using next() function
while True:
try:
print (next(it))
except StopIteration:
sys.exit() #you have to import sys module for this
UN generator è una funzione che produce o restituisce una sequenza di valori utilizzando il metodo yield.
Quando viene chiamata una funzione generatore, restituisce un oggetto generatore senza nemmeno iniziare l'esecuzione della funzione. Quando il metodo next () viene chiamato per la prima volta, la funzione inizia l'esecuzione finché non raggiunge l'istruzione yield, che restituisce il valore restituito. Il rendimento tiene traccia, cioè ricorda l'ultima esecuzione e la seconda chiamata a next () continua dal valore precedente.
Esempio
L'esempio seguente definisce un generatore, che genera un iteratore per tutti i numeri di Fibonacci.
#!usr/bin/python3
import sys
def fibonacci(n): #generator function
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(5) #f is iterator object
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()