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
iterano sulle liste, cioé ripetono un codice per ogni elemento all’interno di una lista.
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 posso iterare anche dal risultato di una funzione range()
.
Infatti range(numero)
restituisce una lista di numeri da zero al numero dato
Il codice:
for i in range(4):
print (i)
Scriverà:
0
1
2
3
La funzione range()
ha anche altri paramentri opzionali.
range(lower, upper)
restituisce una lista di numeri dal più piccolo lower
al più grande upper
.
range(lower, upper, step)
restituisce una lista di numeri dal più piccolo lower
al più grande upper
incrementando del valore step
.
Il codice:
for i in range(10,30,5):
print (i)
Scriverà:
10
15
20
25
While
I cicli while
vengono eseguiti finchè la condizione indicata viene a mancare.
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é a numero
non viene assegnato un valore.
numero=None
while not numero:
try:
numero=int(input("Inserisci un numero intero: "))
except:
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.