Задача 1. Генератор Фибоначчи
Создайте генератор, который бесконечно генерирует последовательность Фибоначчи, возвращая по одному числу за раз.
0
1
1
2
3
5
8
13
21
34
...
Эталонное решение
# homework_01_fibonacci.py
from typing import Iterator
def fibonacci() -> Iterator[int]:
"""Бесконечный генератор чисел Фибоначчи."""
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fib = fibonacci()
for _ in range(20):
print(next(fib))
Задача 2. Генератор уникальных элементов
Создайте генератор, который принимает список элементов и выдаёт только уникальные значения, сохраняя порядок их появления.
data = [3, 1, 2, 3, 4, 1, 5, 2, 6, 7, 5, 8]
# 3 1 2 4 5 6 7 8
Эталонное решение
# homework_02_unique.py
from typing import Iterable, Iterator, Any
def unique_elements(data: Iterable[Any]) -> Iterator[Any]:
"""Возвращает уникальные элементы в порядке появления."""
seen = set()
for item in data:
if item not in seen:
seen.add(item)
yield item
data = [3, 1, 2, 3, 4, 1, 5, 2, 6, 7, 5, 8]
for value in unique_elements(data):
print(value)
Как запустить в VS Code
- Создайте файл
homework_56.pyс решением. - Откройте терминал (Ctrl + `).
- Запустите:
python homework_56.py - Проверьте, что порядок и значения совпадают с условием.