Python
Как сложить числа в списке Python: sum, цикл и проверка типов
Чтобы сложить числа в списке Python, обычно используют встроенную функцию sum(). Она принимает последовательность чисел и возвращает их сумму. Это самый короткий и читаемый способ для обычных списков
numbers = [10, 20, 30]
total = sum(numbers)
print(total)
Результат
60
Короткий ответ
numbers = [5, 8, 12, 4]
print(sum(numbers))
Если нужен результат в переменной
numbers = [5, 8, 12, 4]
total = sum(numbers)
print("Сумма:", total)
Такой вариант подходит для целых чисел и дробных чисел
prices = [10.5, 20.0, 7.25]
print(sum(prices))
Как сложить элементы через цикл
Через цикл пишут так
numbers = [10, 20, 30]
total = 0
for number in numbers:
total += number
print(total)
Этот способ полезен для обучения, потому что показывает, как сумма накапливается шаг за шагом. Но в обычном коде для простой суммы лучше sum(numbers)
Что делать, если числа пришли строками
Если список получился из строк, sum() не сможет сложить элементы как числа
numbers = ["10", "20", "30"]
print(sum(numbers))
Будет ошибка типов. Нужно сначала преобразовать строки в числа
numbers = ["10", "20", "30"]
real_numbers = [int(number) for number in numbers]
print(sum(real_numbers))
Или сразу через map()
numbers = ["10", "20", "30"]
print(sum(map(int, numbers)))
Если числа дробные, используйте float
prices = ["10.5", "20.0", "7.25"]
print(sum(map(float, prices)))
Как сложить числа, введенные через пробел
Пользователь может ввести строку 10 20 30. Ее нужно разбить на части, превратить части в числа и сложить
text = input("Введите числа через пробел: ")
numbers = list(map(int, text.split()))
total = sum(numbers)
print("Сумма:", total)
Если пользователь введет 10 20 30, программа выведет 60
Как сложить только положительные числа
Иногда нужно складывать не все элементы, а только те, что подходят по условию
numbers = [10, -5, 20, -3, 7]
positive_sum = sum(number for number in numbers if number > 0)
print(positive_sum)
Результат
37
Здесь внутри sum() используется генератор: Python перебирает числа и берет только положительные
Как сложить числа в списке списков
Если есть таблица, можно сложить все числа вложенными циклами или генератором
table = [
[1, 2, 3],
[4, 5, 6],
]
total = sum(number for row in table for number in row)
print(total)
Результат
21
Если нужно посчитать сумму по каждой строке
table = [
[1, 2, 3],
[4, 5, 6],
]
for row in table:
print(sum(row))
Как задать начальное значение sum
У sum() есть второй аргумент — стартовое значение
numbers = [10, 20, 30]
total = sum(numbers, 100)
print(total)
Результат
160
Python сначала берет 100, а потом добавляет элементы списка. В обычных задачах стартовое значение чаще не нужно, но полезно знать, что оно есть
Почему sum не стоит использовать для склейки строк
sum() предназначен для чисел. Для строк используйте join()
words = ["Python", "это", "удобно"]
text = " ".join(words)
print(text)
Если попытаться складывать строки через sum(), Python выдаст ошибку и предложит использовать join()
Мини-практика
Создайте файл sum_lesson.py
marks = [5, 4, 5, 3, 4]
total = sum(marks)
average = total / len(marks)
print("Сумма оценок:", total)
print("Средняя оценка:", average)
Потом замените список оценок на ввод пользователя
text = input("Введите оценки через пробел: ")
marks = list(map(int, text.split()))
print("Сумма:", sum(marks))
print("Средняя:", sum(marks) / len(marks))
Так вы закрепите сразу три вещи: split(), map(int, ...) и sum()
Частые ошибки
Первая ошибка — передать в sum() список строк. Если данные пришли из input(), они почти всегда строки, и их нужно преобразовать
Вторая ошибка — делить на len(numbers), не проверив, что список не пустой. Если список пустой, будет деление на ноль
numbers = []
if numbers:
print(sum(numbers) / len(numbers))
else:
print("Список пустой")
Третья ошибка — использовать sum() для строк. Для строк нужен join()
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как посчитать количество уникальных элементов в списке Python
- Как удалить элемент из списка в Питоне: remove, pop, del и фильтр
- Path в Python: как найти путь к файлу, папке и самому Python
- round в Python: как округлять числа до целого, сотых и нужного количества знаков