hidden code topic >  > 

Реализация range

Junior

Реализуйте функцию-генератор my_range, которая имитирует поведение встроенной функции range в Python. Функция должна поддерживать три варианта вызова:

  • my_range(stop) — генерирует последовательность чисел от 0 до (stop - 1) с шагом 1.
  • my_range(start, stop) — генерирует последовательность чисел от start до (stop - 1) с шагом 1.
  • my_range(start, stop, step) — генерирует последовательность чисел от start до (stop - 1) с шагом step.

Функция должна корректно обрабатывать отрицательные значения step и выбрасывать исключение ValueError, если step равен 0.

Для проверки корректности работы функции, результат вызова my_range будет преобразовываться в список с помощью list().

Пример 1:

Входные данные: stop = 5

Выход: [0,1,2,3,4]

Пример 2:

Входные данные: start = 1, stop = 10, step = 2

Выход: [1,3,5,7,9]

Пример 3:

Входные данные: start = 10, stop = 1, step = -2

Выход: [10,8,6,4,2]

Требования:

  • Функция должна быть реализована как генератор (использовать yield).
  • Функция должна поддерживать отрицательные значения step.
  • Если step равен 0, функция должна выбрасывать исключение ValueError.
  • Результат вызова my_range должен иметь возможность преобразовываться в список для проверки.

Примечания:

  • Аргументы передаются, как позиционные.
  • Гарантируется, что входные значения будут корректными.
  • Функция должна быть реализована без использования встроенного range.

Отметьте свой прогресс

Сообщить об ошибке в тексте