Перебирайте 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.