Menu
Coddy logo textTech

Iterator o niestandardowym zakresie

Lekcja 10 z 13 w kursie Iteratory w Pythonie w Coddy.

challenge icon

Wyzwanie

Łatwy

Utwó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, stop i step w 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, stop i step
WYMAGANY FORMAT WYJŚCIA: [Tutaj przetłumaczona treść]

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 wierszu

Wszystkie lekcje w sekcji Iteratory w Pythonie

Poćwicz samodzielnie: Kompilator Python online