Iteratore di intervallo personalizzato
Lezione 10 di 13 del corso Iteratori in Python di Coddy.
Sfida
FacileCrea una classe iteratrice personalizzata chiamata StepRange che genera una sequenza di numeri con una dimensione del passo personalizzata. Questa iteratrice dovrebbe imitare il comportamento della funzione incorporata range() di Python, ma con maggiore flessibilità nelle dimensioni del passo.
La classe StepRange dovrebbe:
- Accettare i parametri
start,stopestepnel suo costruttore - Implementare il metodo
__iter__()per restituire l’oggetto iteratore stesso - Implementare il metodo
__next__()per generare il valore successivo nella sequenza - Gestire dimensioni del passo sia positive che negative
- Sollevare un’eccezione
StopIterationquando la sequenza è esaurita
Dopo aver implementato la classe StepRange, creane un’istanza utilizzando i valori di input e stampa ogni numero generato su una nuova riga.
Verrà fornito il seguente input:
- Tre numeri interi separati da spazi che rappresentano
start,stopestep
Provalo tu
# Leggi l'input
start, stop, step = map(int, input().split())
class StepRange:
def __init__(self, start, stop, step):
self.start = start
self.stop = stop
self.step = step
self.current = start
def __iter__(self):
return self
def __next__(self):
# TODO: Implementa il metodo __next__()
pass
# Crea un'istanza di StepRange
step_range = StepRange(start, stop, step)
# TODO: Itera su StepRange e stampa ogni valore
# Ricorda di stampare ogni valore su una nuova rigaTutte le lezioni di Iteratori in Python
4Sfide pratiche
Iteratore di intervallo personalizzatoIteratore di FibonacciIteratore ciclicoIteratore filtratoEsercitati da solo: Compilatore Python online