Создать генератор квадратов чисел

Итерируйтесь по range(m) и выдавайте value * value через yield. Получатся квадраты от 0 до m−1.

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

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

Итерируйтесь по range(m) и выдавайте value * value через yield. Получатся квадраты от 0 до m−1.

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

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

Условие

Реализуйте в Python генератор, который принимает целое n и последовательно выдаёт квадраты чисел от 0 до n‑1.

def generate_squares(m):
    # TODO: генератор квадратов чисел
    pass

Ответ

Итерируйтесь по range(m) и выдавайте value * value через yield. Получатся квадраты от 0 до m−1.

def generate_squares(m):
    for value in range(m):
        yield value * value

assert list(generate_squares(5)) == [0, 1, 4, 9, 16]

Граница m не включается, поэтому квадрат самого m отсутствует. При нуле или отрицательном m последовательность пуста; при необходимости запрета отрицательных значений добавьте проверку.

Генератор вычисляет значения по мере запроса и не хранит всю последовательность. Каждый вызов next продвигает его на один элемент, после завершения возникает StopIteration. Полный обход требует O(m) шагов при положительном m.

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

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

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

Подробнее