ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Накопитель суммы в Python: как складывать много чисел

Автор: · Обновлено

Накопитель — переменная, которая хранит результат уже обработанной части последовательности. Для суммы нейтральное начальное значение равно нулю. На каждой итерации новое число прибавляется к прежнему total, и инвариант остаётся понятным: total равен сумме просмотренных элементов.

Сумма квадратов

limit = 4
total = 0

for number in range(1, limit + 1):
    total += number ** 2
    print(number, total)

print('Ответ:', total)

Вывод трассировки:

1 1
2 5
3 14
4 30
Ответ: 30

Строка total += value является сокращением total = total + value. Печать внутри цикла показывает промежуточное состояние; в готовом решении её можно убрать.

Где должен находиться ноль

Если присваивать total = 0 внутри цикла, предыдущая сумма будет стираться на каждой итерации и в конце останется только последний вклад. Если переменную вообще не создать до первого +=, возникнет NameError. Инициализация должна выполняться ровно один раз перед циклом.

Начальное значение зависит от операции: для произведения это 1, для сборки строки — пустая строка, для списка — пустой список. Механическое использование нуля иногда создаёт неверный результат.

Контроль ручным расчётом

Прочитайте n и найдите сумму всех чисел от 1 до n, которые делятся на 3. Для n = 10 ответ равен 18, потому что подходят 3, 6 и 9. Проверьте n = 2 и n = 3. Добавьте временный print после прибавления и сравните трассировку с ручной таблицей «число — текущая сумма». Затем уберите диагностическую печать, оставив только итог.

Нейтральный элемент операции

Сравните три накопителя: сумму с нулём, произведение с единицей и сборку слов в пустой список. Для одного набора чисел проведите параллельную трассировку всех переменных. Затем намеренно начните произведение с нуля и объясните, почему дальнейшие данные уже не влияют на результат. Проверьте пустой список: сумма равна нулю, произведение по выбранному контракту может быть единицей, а среднее не определено. Начальное значение — часть математического смысла, поэтому его следует выбирать до цикла и подтверждать отдельным тестом без элементов.

Практикум: сумма и среднее с пустым набором

Прочитайте n чисел, накопите сумму и вычислите среднее. Проверьте n = 1, смешанные знаки и n = 0. Для нуля заранее выберите контракт: сообщить, что среднего нет, или отклонить ввод; деление выполнять нельзя. Сверяйте после каждого шага, что сумма равна сумме уже прочитанных значений. Затем расширьте программу подсчётом положительных чисел, не меняя знаменатель среднего случайно. Имена total_count и positive_count должны различать эти величины.

Контрольная точка

Каким значением инициализируется сумма и почему? Сравните нейтральный элемент сложения с попыткой начать максимум с нуля — у этих шаблонов разные требования.

Частые вопросы

Можно ли использовать встроенную sum?

Да, если данные уже находятся в коллекции. Ручной накопитель полезен для понимания цикла и потокового ввода. В обоих случаях отдельно обрабатывается пустой набор, если дальше требуется деление на количество.

Источники