For Loops in Python: tutto ciò che devi sapere

Pubblicato: 2022-08-18

Questo tutorial ti insegnerà tutto sull'uso dei cicli for in Python con esempi di codice.

Nella programmazione, i loop ti aiutano a ripetere un insieme specifico di istruzioni. Utilizzerai i cicli for per iterazioni definite quando:

  • sai che lavorerai con una sequenza con un numero finito di elementi
  • vedi il numero di ripetizioni in anticipo

Questo tutorial ti insegnerà tutto su come lavorare con i cicli for in Python. Inizierai imparando la sintassi e le semplici iterazioni usando un ciclo for. Quindi imparerai come elaborare gli argomenti della riga di comando, utilizzare le istruzioni di controllo del ciclo e altro ancora.

Iniziamo…

Sintassi di Python per Loop

Sintassi di Python per Loop

La sintassi generica per l'utilizzo del ciclo for in Python è la seguente:

 for item in iterable: # do something on item statement_1 statement_2 . . . statement_n

Nella sintassi sopra:

  • item è la variabile di ciclo.
  • iterable denota qualsiasi iterabile Python come liste, tuple e stringhe.
  • da statement_1 a statement_n denotano le istruzioni nel corpo del ciclo.

Nota : assicurati di aggiungere i due punti ( : ) dopo il nome dell'iterabile e di far rientrare tutte le istruzioni nel corpo del ciclo di quattro spazi.

Comune per i costrutti di loop in Python

per costrutti loop

Quando si utilizza un ciclo for :

  • È possibile accedere agli elementi direttamente utilizzando la sintassi discussa nella sezione precedente.
  • Puoi usare for loop insieme alle funzioni integrate di Python come range() ed enumerate() .

Li tratteremo in questa sezione.

Utilizzo di for Loop per accedere agli elementi

Per migliorare la leggibilità, dovresti scegliere una variabile di ciclo indicativa di ciò che contiene l'elenco. Ad esempio, nell'esempio seguente, nums è un elenco di numeri che usiamo num come variabile di ciclo. Nota come for num in nums: è intuitivo e di facile lettura.

 nums = [4,5,9,1,3] for num in nums: print(num) # Output 4 5 9 1 3

Aggiungendo qualche altro esempio, puoi usare for fruit in fruits: e for student in students: quando si scorre rispettivamente la fruits e l'elenco students .

Utilizzo di for Loop con la funzione range()

Quando si desidera accedere a un elemento dell'elenco tramite il suo indice, è possibile utilizzare la funzione range() .

In Python, range(start, stop, step) restituisce un oggetto range, che puoi scorrere per ottenere gli indici: start , start + step e così via, fino a stop , ma escluso.

 for i in range(len(nums)): print(nums[i]) # Output 4 5 9 1 3

Puoi anche usare la funzione range() per generare una sequenza di numeri da scorrere. Nell'esempio seguente, impostiamo il parametro del step facoltativo su 2. Quindi otteniamo numeri da 10 fino a 20 esclusi, in passaggi di 2.

 for i in range(10,20,2): print(i) # Output 10 12 14 16 18

Utilizzo di ciclo for con la funzione enumerate()

Quando si desidera scorrere un iterabile e accedere contemporaneamente agli elementi e ai relativi indici, è possibile utilizzare la funzione enumerate().

Ecco un esempio.

 for idx, num in enumerate(nums): print(f"{idx}:{num}") # Output 0:4 1:5 2:9 3:1 4:3
python-for-loop

Come leggere gli elementi dagli elenchi usando for Loop in Python

Per scorrere gli elenchi Python usando il ciclo for, puoi usare la sintassi generica della sezione precedente.

Nell'esempio seguente, nums è iterabile e num è la variabile di ciclo.

 nums = [4,5,9,1,3] for num in nums: print(f"{num} times 3 is {num*3}") # action on each num # Output 4 times 3 is 12 5 times 3 is 15 9 times 3 is 27 1 times 3 is 3 3 times 3 is 9

Come eseguire il ciclo di stringhe utilizzando for Loop in Python

Le stringhe Python sono iterabili e puoi eseguire loop, indicizzazione, slicing e altro.

Nota : Python non ha un tipo di dati di carattere integrato. Quindi puoi trattare un carattere come una stringa di lunghezza uno.

 my_string = "Code" for char in my_string: print(char) # Output C o d e

Come eseguire il ciclo di array utilizzando for Loop in Python

Ripeti gli array usando for Loop

Puoi scorrere gli array usando loop e nest for loop.

Nel frammento di codice seguente, array1 è un elenco nidificato contenente elenchi più piccoli come elementi. Quindi il ciclo di array1 fornisce ogni riga, come mostrato di seguito.

 array1 = [[2,3],[7,8]] for row in array1: print(row) # Output [2, 3] [7, 8]

Per accedere ai singoli elementi in ogni riga, puoi utilizzare un altro ciclo for .

 array1 = [[2,3],[7,8]] for row in array1: for elt in row: print(elt)

Nella cella di codice sopra:

  • Il ciclo for esterno ti aiuta a indicizzare nelle righe.
  • Il ciclo for interno ti consente di attingere agli elementi in ogni riga.

Ecco l'output corrispondente.

 Output 2 3 7 8

Come leggere gli argomenti della riga di comando usando for Loop

Riga di comando

Come sviluppatore, dovresti essere a tuo agio nell'esecuzione di script Python dalla riga di comando e nell'utilizzo degli argomenti della riga di comando per interagire con il tuo script.

Puoi usare i moduli integrati di Python come sys e argparse per analizzare e leggere gli argomenti della riga di comando.

In questa sezione, esamineremo come utilizzare il modulo sys e utilizzare un ciclo for , per scorrere l'elenco degli argomenti della riga di comando.

Nel modulo sys, sys.argv è l'elenco degli argomenti della riga di comando che si passano. Quindi puoi scorrere sys.argv proprio come faresti con qualsiasi elenco Python.

 # main.py import sys for arg in sys.argv: print(arg)

Ora puoi eseguire il programma dalla riga di comando, come mostrato di seguito.

 $ python main.py Hello Python3 main.py Hello Python3

Per impostazione predefinita, il nome del modulo è il primo argomento ed è all'indice zero in sys.argv .

Se vuoi accedere agli indici e agli argomenti corrispondenti, puoi usare la funzione range() .

 # main.py import sys for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")

️ Quindi, riesegui main.py.

 $ python main.py Hello Python3 arg0 is main.py arg1 is Hello arg2 is Python3

Si supponga di voler analizzare ed elaborare gli argomenti diversi dal nome del modulo. È possibile impostare il valore iniziale su 1, come nella cella del codice sottostante.

 # main.py import sys for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
 $ python main.py Hello Python3 arg1 is Hello arg2 is Python3
python-for-loop-command-line-args

Mettendo tutto insieme, il file main.py contiene il codice seguente.

 # main.py import sys print("\nPrinting all command-line arguments...") for arg in sys.argv: print(arg) print("\nPrinting all command-line arguments with index...") for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}") print("\nPrinting command-line arguments except arg0: module_name...") for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")

Ecco l'output quando si esegue il modulo.

 $ python main.py Hello Python3 Printing all command-line arguments... main.py Hello Python3 Printing all command-line arguments with index... arg0 is main.py arg1 is Hello arg2 is Python3 Printing command-line arguments except arg0: module_name... arg1 is Hello arg2 is Python3

Come usare break Statement Inside for Loop

break Statement Inside for Loop

Come altri linguaggi di programmazione, Python supporta anche l'uso di istruzioni di controllo del ciclo break and continue . Queste istruzioni possono aiutare a modificare il flusso di controllo nei loop, in base ad alcune condizioni. Vediamo come usarli all'interno di un ciclo for.

L' break dell'istruzione può essere utilizzata per interrompere un ciclo quando una condizione specifica è True .

Vogliamo scrivere un programma per fare quanto segue:

  • Correggi k , il numero di input.
  • Utilizzare un ciclo for per leggere gli input dell'utente, una cifra alla volta, e sommare i numeri non negativi (maggiori o uguali a zero).
  • Questo processo dovrebbe continuare finché l'utente immette numeri non negativi.
  • Quando l'utente inserisce un numero negativo, esci dal ciclo e stampa la somma.

Ecco il codice che esegue l'attività di cui sopra.

 k= 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: break # exit loop when num < 0 sum += num print(sum)

Se l'utente immette un numero minore di zero, il controllo interrompe il ciclo for alla prima istruzione dopo il ciclo.

 Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 10

Come utilizzare continue Statement Inside for Loop

L'istruzione continue può essere utilizzata per saltare determinate iterazioni a seconda di una condizione specifica.

Usiamo gli stessi esempi nella sezione precedente.

  • Leggi l'input dell'utente e calcola la somma dei numeri non negativi.
  • Se l'utente inserisce un numero negativo, salta l'iterazione, passa all'iterazione successiva e leggi il numero successivo.
 k = 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: continue sum += num print(sum)

Ecco un esempio di output.

 Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 Enter a number: 3 13

Il quarto numero è -1, che è negativo. Tuttavia, questa volta il ciclo for continua finché non raggiungiamo il numero specificato di input e ignora gli input negativi. In sostanza, restituisce la somma di tutti i numeri non negativi dai k numeri di input.

Puoi imbatterti in un ciclo infinito in Python?

Ciclo infinito

In tutti gli esempi e casi d'uso che abbiamo discusso finora, non ci siamo mai imbattuti nel problema di un ciclo for infinito. Ma possiamo avere un ciclo for infinito in Python?

Considera la seguente funzione double() .

 def double(x = 1): return x*2
  • Quando si chiama la funzione double() senza specificare il valore di x , viene utilizzato il valore predefinito di 1.
  • Quando si specifica un valore per x nella chiamata di funzione, viene utilizzato quel valore.
 double() # Returns: 2 double(20) # Returns: 40

In Python, la funzione iter() restituisce un oggetto iteratore. È possibile utilizzare next(iter-obj) per scorrere la sequenza e accedere agli elementi successivi.

– Considera un oggetto richiamabile e un valore, sentinella .

iter(callable-object, sentinel) può essere utilizzato per eseguire l'iterazione fino a quando il valore restituito dal callable-object è uguale a sentinel .

Capisci perché possiamo avere un ciclo for infinito in questo caso?

python-per-ciclo-infinito

Bene, hai un callable-object e un valore sentinel . Se il valore restituito dal callable non è mai uguale alla sentinella, il ciclo continua all'infinito!

Usiamo la funzione sopra double come callable e impostiamo il valore sentinella su 0.

Nota : menzionare il nome della funzione double , non la chiamata di funzione double() .

Poiché il valore restituito dalla funzione double è sempre 2 e non è mai uguale a 0, abbiamo un ciclo infinito!

️ Prova a eseguire la seguente cella di codice. È un ciclo for infinito e dovrai forzare l'arresto del programma.

 for _ in iter(double,0): print("Running...")
python-for-loop-infinito

Python For Loops: domande pratiche

#1 . Utilizzare for loop per stampare tutti i numeri pari nell'intervallo da 0 a 20.

Suggerimento : utilizzare la funzione range() con il valore di step corretto.

#2 . Stampa tutti i numeri pari da 20 a 0.

Suggerimento : utilizzare un valore negativo per il parametro step nella funzione range() .

#3 . Crea un array NumPy tridimensionale.

Suggerimento : utilizzare il ciclo for e i cicli for nidificati secondo necessità per accedere alle righe e alle singole voci nell'array.

Prova gli esempi

Avvolgendo

Ecco un riassunto di ciò che hai imparato in questo tutorial.

  • La sintassi per utilizzare il ciclo for di Python insieme alle funzioni range() ed enumerate()
  • Utilizzo di cicli for per scorrere elenchi, array e stringhe e leggere argomenti della riga di comando
  • Utilizzo delle istruzioni di controllo del ciclo: interruzione per uscire dal ciclo e istruzione continue per saltare determinate iterazioni, in base alle condizioni, all'interno dei cicli for
  • Comprendere la possibilità di infiniti cicli for in Python

Quindi, impara come usare il metodo split() in Python.