🏠 Домашнее задание 29

⚡ Кратко

Две задачи: бесконечный генератор Фибоначчи и генератор уникальных элементов с сохранением порядка.

Задача 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

  1. Создайте файл homework_56.py с решением.
  2. Откройте терминал (Ctrl + `).
  3. Запустите: python homework_56.py
  4. Проверьте, что порядок и значения совпадают с условием.