Python

Как сложить числа в списке Python

Числа в списке можно сложить через sum, через цикл или внутри функции. Для новичка полезно понять оба способа: короткий и явный

Разберем сложение чисел в списке: короткий вариант через sum, явный цикл, преобразование строк в числа и функцию, которая не падает на пустом списке

Базовый пример

Короткий вариант:

numbers = [3, 5, 2]
total = sum(numbers)
print(total)

Разбор по шагам

sum(numbers) подходит, когда в списке уже лежат числа. Если значения пришли из input, CSV или формы, они часто будут строками, и перед сложением их нужно преобразовать через int или float

Цикл нужен, когда сумма считается не по всем элементам. Например, можно складывать только положительные числа, только суммы больше нуля или только значения, которые удалось преобразовать в число. Такой код длиннее, зато в нем видно условие отбора

По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы

По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы

Практические варианты

Через цикл

numbers = [3, 5, 2]
total = 0

for number in numbers:
    total += number

print(total)

Если числа пришли строками

values = ['3', '5', '2']
numbers = [int(value) for value in values]
print(sum(numbers))

Частые ошибки

Частая ошибка — складывать строки вместо чисел. Если данные пришли из input, CSV или формы, сначала преобразуйте их через int или float

Как проверить результат

  • запустить код на обычном примере
  • проверить пустой список
  • проверить список из одного элемента
  • проверить повторы
  • объяснить, меняется исходный список или создается новый
  • вынести действие в функцию, если оно повторяется

Сумма только подходящих чисел

Иногда нужно сложить не все элементы, а только положительные

numbers = [-2, 5, 0, 7]
total = 0

for number in numbers:
    if number > 0:
        total += number

print(total)

Функция для повторного использования

def sum_numbers(numbers):
    total = 0
    for number in numbers:
        total += number
    return total

print(sum_numbers([1, 2, 3]))
print(sum_numbers([]))

Функция удобна, когда сложение нужно использовать в нескольких местах: в задаче, отчете, боте или обработке файла

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

Проверьте пустой список, отрицательные числа, десятичные числа и строки, которые нужно преобразовать. Если в списке есть нечисловое значение, sum выдаст ошибку

Практика на закрепление

Практический сценарий — посчитать сумму заказов, но учитывать только оплаченные

orders = [
    {"total": 1200, "status": "paid"},
    {"total": 500, "status": "cancelled"},
    {"total": 2300, "status": "paid"},
]

total = 0

for order in orders:
    if order["status"] == "paid":
        total += order["total"]

print(total)

Теперь вынесите расчет в функцию:

def get_paid_total(orders):
    total = 0
    for order in orders:
        if order["status"] == "paid":
            total += order["total"]
    return total

print(get_paid_total(orders))
print(get_paid_total([]))

Такой пример ближе к реальной задаче, чем просто sum([1, 2, 3]): данные имеют структуру, есть фильтр, есть пустой случай

Практика: сумма покупок из строк

Сделайте функцию, которая получает список строк, пытается превратить каждую строку в число и складывает только корректные значения. Такой сценарий ближе к реальности, чем список уже готовых чисел

def sum_prices(values):
    total = 0

    for value in values:
        try:
            total += float(value)
        except ValueError:
            continue

    return total

print(sum_prices(["1200", "499.5", "нет данных"]))
print(sum_prices([]))

После этого добавьте условие: учитывать только положительные суммы. Так вы повторите цикл, проверку типа, фильтрацию и возврат результата из функции

Как понять, что перед вами числа

Если список создан руками, обычно понятно, что внутри числа. Но данные из input, файла, таблицы или формы часто приходят строками. Поэтому перед суммированием полезно вывести тип первого элемента или явно преобразовать значения

values = ["10", "20", "30"]
numbers = []

for value in values:
    numbers.append(int(value))

print(sum(numbers))

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

Сумма строк, дробей и пустого списка

Перед сложением решите, какие числа допустимы. Для целых значений подойдет int, для цен и измерений чаще нужен float. Пустой список для sum не ошибка: результатом будет 0

print(sum([]))
print(sum([1.5, 2.5]))

Но если в списке смешаны строки и числа, ошибка появится сразу

values = [10, "20", 30]
numbers = [int(value) for value in values]
print(sum(numbers))

Такой пример полезен для новичка: проблема не в sum, а в типах данных внутри списка

Итоговая практика: сумма только нужных чисел

Сделайте функцию, которая складывает только положительные числа. Такой вариант полезнее простой строки sum(numbers), потому что показывает фильтр внутри цикла

def sum_positive(numbers):
    total = 0

    for number in numbers:
        if number > 0:
            total += number

    return total

print(sum_positive([10, -3, 5]))
print(sum_positive([-1, -2]))
print(sum_positive([]))

После этого измените условие: сложить только числа больше 100 или только четные числа. Если функция легко меняется под новое правило, тема действительно усвоена

Когда задача звучит как «сложить числа в списке», не торопитесь писать одну строку. Сначала уточните, какие числа учитывать: все, только положительные, только четные, только оплаченные суммы или только значения после преобразования из строк. Это уточнение меняет решение. Если условие простое, хватит sum. Если появляется фильтр или очистка данных, лучше написать цикл или отдельную функцию

Для закрепления возьмите список заказов и посчитайте три суммы: все заказы, только оплаченные и только заказы дороже 1000. Это одна и та же базовая операция, но три разных условия. После такого упражнения становится понятнее, где заканчивается простая функция sum, а где начинается полноценная обработка данных

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x