Создать генератор, выдающий квадраты чисел в обратном порядке

Перебирайте range(n, 0, -1) и выдавайте квадрат каждого числа через yield. Последовательность начинается с n² и заканчивается 1.

Короткий ответ

Что ответить на собеседовании

Перебирайте range(n, 0, -1) и выдавайте квадрат каждого числа через yield. Последовательность начинается с n² и заканчивается 1.

Подробный разбор

Ответ с пояснениями

Условие

Функция‑генератор, принимающая целое число и возвращающая последовательность квадратов всех чисел от указанного значения до единицы включительно.

Ответ

Перебирайте range(n, 0, -1) и выдавайте квадрат каждого числа через yield. Последовательность начинается с n² и заканчивается 1.

def descending_squares(n):
    for value in range(n, 0, -1):
        yield value ** 2

Пример: list(descending_squares(3)) даст [9, 4, 1]. Нулевая правая граница не включается, поэтому квадрат нуля не появится. Для n <= 0 выбран пустой результат; если такие аргументы запрещены, добавьте явную проверку.

Генератор не создаёт промежуточный список и вычисляет значения по запросу. Полное потребление требует O(n) итераций. Вызов самой генераторной функции только создаёт объект генератора — тело начинает выполняться при первом next.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее