Iterator o niestandardowym zakresie
Lekcja 10 z 13 w kursie Iteratory w Pythonie w Coddy.
Wyzwanie
ŁatwyUtwórz niestandardową klasę iteratora o nazwie StepRange, która generuje sekwencję liczb z niestandardowym rozmiarem kroku. Ten iterator powinien naśladować działanie wbudowanej funkcji Pythona range(), ale oferować większą elastyczność w zakresie rozmiarów kroku.
Klasa StepRange powinna:
- Przyjmować parametry
start,stopistepw konstruktorze - Implementować metodę
__iter__(), która zwraca sam obiekt iteratora - Implementować metodę
__next__(), która generuje następną wartość w sekwencji - Obsługiwać zarówno dodatnie, jak i ujemne rozmiary kroku
- Zgłaszać wyjątek
StopIteration, gdy sekwencja się wyczerpie
Po zaimplementowaniu klasy StepRange utwórz jej instancję, używając wartości wejściowych, i wypisz każdą wygenerowaną liczbę w nowym wierszu.
Dane wejściowe będą następujące:
- Trzy liczby całkowite rozdzielone spacjami, reprezentujące
start,stopistep
Spróbuj swoich sił
# Odczytaj dane wejściowe
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: Zaimplementuj metodę __next__()
pass
# Utwórz instancję klasy StepRange
step_range = StepRange(start, stop, step)
# TODO: Przejdź przez StepRange i wypisz każdą wartość
# Pamiętaj, aby wypisać każdą wartość w nowym wierszuWszystkie lekcje w sekcji Iteratory w Pythonie
4Zadania praktyczne
Iterator o niestandardowym zakresieIterator FibonacciegoIterator cyklicznyIterator filtrujący2Tworzenie własnych iteratorów
Implementowanie __iter__()Implementowanie __next__()Iteratory nieskończonePoćwicz samodzielnie: Kompilator Python online