Python ABC

Se vuoi imparare Python parti dall'ABC

View project on GitHub

Cicli

Prima di studiare i cicli e gli iteratori assicurati di conoscere le liste.

Per ripetere una determinata azione più volte e/o su più elementi si utilizzano le istruzioni for e while per costruire dei “cicli”.

Il programma ripeterà il codice all’interno del ciclo per un numero di volte determinato da una determinata condizione.

Ricorda, in python l’indentazione è molto importante!

For

I cicli for scorrono gli elementi di un oggetto iterabile, per esempio una lista, ripetendo il codice per ogni elemento.

Il seguente codice:

for animale in ["cane", "gatto", "topo"]:
    print ("{0} è un mammifero".format(animale))

Genera il seguente risultato:

cane è un mammifero
gatto è un mammifero
topo è un mammifero

I cicli for possono scorrere anche i numeri rappresentati da un oggetto range.

range(stop) restituisce un oggetto range che rappresenta una sequenza di numeri interi a partire da 0, fino a stop escluso, con passo 1. Per esempio, range(4) rappresenta i numeri 0, 1, 2, 3.

Il codice:

for i in range(4):
    print (i)

Scriverà:

0
1
2
3

La funzione range() permette di specificare anche il valore iniziale e il passo.

range(start, stop) rappresenta una sequenza di interi a partire da start, fino a stop escluso, con passo 1.

range(start, stop, step) permette di specificare il passo, che può essere positivo o negativo, ma non zero. Il valore finale stop è sempre escluso.

Il codice:

for i in range(10,30,5):
    print (i)

Scriverà:

10
15
20
25

While

I cicli while ripetono il codice finché la condizione indicata è vera.

x = 0
while x < 4:
    print(x)
    x += 1

Nota: La sintassi x += 1 è la versione compatta di x = x+1

Esempio pratico

Ciclo while per riproporre la richiesta di dati in caso di errore di immissione

La funzione input() acquisisce un valore inserito da tastiera in formato stringa. A volte è necessario che il dato acquisito sia un numero, in questi casi si utilizzano le funzioni int() o float() per convertirlo.

Si può quindi utilizzare try/except per controllare che sia stato inserito un dato valido, ma per riproporre la domanda in caso di errore è necessario creare un ciclo.

Nel seguente esempio ripetiamo la richiesta finché numero è None, cioè finché non è stato acquisito un intero valido. Se la conversione fallisce, viene gestita l’eccezione ValueError e numero rimane None. Anche 0 è un valore intero valido e permette di terminare il ciclo.

numero = None

while numero is None:
    try:
        numero = int(input("Inserisci un numero intero: "))
    except ValueError:
        print("Il dato inserito non è un numero intero")

This content is a derivative of “Learn X in Y minutes” by adambard, used under a CC BY-SA 3.0 license.