Esercizi Iteratori Python
Codegrind Team•Jul 21 2022
Ecco degli esercizi semplici con soluzione per praticare l’utilizzo di iteratori in Python.
Esercizio 1
Data una lista di numeri, crea un iteratore che restituisca solo i numeri pari.
numeri = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
class Pari:
def __init__(self, numeri):
self.numeri = numeri
self.index = 0
def __iter__(self):
return self
def __next__(self):
while self.index < len(self.numeri):
if self.numeri[self.index] % 2 == 0:
valore = self.numeri[self.index]
self.index += 1
return valore
else:
self.index += 1
raise StopIteration
iteratore_pari = Pari(numeri)
for numero in iteratore_pari:
print(numero)
Esercizio 2
Data una stringa, crea un iteratore che restituisca ogni carattere della stringa in ordine inverso.
parola = "ciao"
class Inverso:
def __init__(self, parola):
self.parola = parola
self.index = len(parola)
def __iter__(self):
return self
def __next__(self):
if self.index > 0:
self.index -= 1
return self.parola[self.index]
else:
raise StopIteration
iteratore_inverso = Inverso(parola)
for carattere in iteratore_inverso:
print(carattere)
Esercizio 3
Data una lista di parole, crea un iteratore che restituisca solo le parole che contengono una data lettera.
parole = ["casa", "cane", "gatto", "auto", "treno", "bicicletta"]
lettera = "a"
class ConLettera:
def __init__(self, parole, lettera):
self.parole = parole
self.lettera = lettera
self.index = 0
def __iter__(self):
return self
def __next__(self):
while self.index < len(self.parole):
if self.lettera in self.parole[self.index]:
valore = self.parole[self.index]
self.index += 1
return valore
else:
self.index += 1
raise StopIteration
iteratore_con_lettera = ConLettera(parole, lettera)
for parola in iteratore_con_lettera:
print(parola)
Esercizio 4
Data una lista di numeri, crea un iteratore che restituisca la somma cumulativa dei numeri.
numeri = [1, 2, 3, 4, 5]
class Cumulativo:
def __init__(self, numeri):
self.numeri = numeri
self.index = 0
self.somma = 0
def __iter__(self):
return self
def __next__(self):
if self.index < len(self.numeri):
self.somma += self.numeri[self.index]
self.index += 1
return self.somma
else:
raise StopIteration
iteratore_cumulativo = Cumulativo(numeri)
for somma in iteratore_cumulativo:
print(somma)