Странная работа sum()

Вот мой код:

spilled, sheets = map(int, input().split())
list_of_spilled = map(int, input().split())

print(sum(list_of_spilled))

a = sum(list_of_spilled)

print(a)

Пример на котором я проверяю работу:

2 10
3 2

И почему-то в первом случае:

print(sum(list_of_spilled)) 

код выводит 5, как и положено

А во втором:

a = sum(list_of_spilled)

print(a)

код выводит 0.

Пожалуйста, объясните, что я делаю не так.


Ответы (1 шт):

Автор решения: Beneviento

В вашем коде вы используете функцию map() для создания итерируемого объекта list_of_spilled. Когда вы вызываете sum(list_of_spilled) в первый раз, он успешно вычисляет сумму (3 + 2 = 5), но после этого list_of_spilled становится пустым.

Когда вы снова пытаетесь использовать sum(list_of_spilled) для присвоения значения переменной a, список уже пуст, и поэтому сумма равна 0.

Чтобы избежать этой проблемы, вы можете преобразовать результат map() в список, чтобы он оставался неизменным после первого использования:

spilled, sheets = map(int, input().split())
list_of_spilled = list(map(int, input().split()))

print(sum(list_of_spilled))

a = sum(list_of_spilled)

print(a)
→ Ссылка