24 lines
1.5 KiB
Markdown
24 lines
1.5 KiB
Markdown
### Задача 9. Генераторы и итераторы (Генераторы, yield, Итераторы)
|
||
|
||
Напишите программу с генераторами и кастомными итераторами:
|
||
|
||
1. `number_generator(start, end, step=1)` — генератор, который yield'ит числа от `start` до `end` с шагом `step`.
|
||
|
||
2. `fibonacci_generator(limit)` — генератор чисел Фибоначчи до `limit`. Используйте `yield` и цикл `while`.
|
||
|
||
3. **Класс `RangeIterator`:**
|
||
- В `__init__(self, start, end)` сохраните границы
|
||
- Метод `__iter__(self)` возвращает `self`
|
||
- Метод `__next__(self)` возвращает следующее число или поднимает `StopIteration`
|
||
|
||
4. `filter_even(generator)` — принимает генератор и возвращает новый генератор, который yield'ит только четные числа. Используйте `yield from` или цикл с `yield`.
|
||
|
||
**Тесты:**
|
||
|
||
1. Создайте генератор чисел от 1 до 20 с шагом 2
|
||
2. Выведите все значения через цикл `for`
|
||
3. Создайте генератор Фибоначчи до 100
|
||
4. Отфильтруйте только четные числа
|
||
5. Создайте `RangeIterator(5, 10)` и выведите все значения
|
||
6. Проверьте, что можно использовать в `list()`: `list(number_generator(1, 10))`
|