← Все вопросы

Цикл for выполняется только один раз — что я делаю не так с отступами?

Задан 4 месяца назад530 просмотров2 ответа
5

Считаю сумму чисел, но в ответе всегда только последнее число:

nums = [1, 2, 3, 4]
total = 0
for n in nums:
    total = n
print(total)  # 4

Почему складывается только последнее?

2 ответа

9
✓ Принятый ответ — помог автору

Тут не отступы, а оператор: ты пишешь total = n — это перезапись, на каждом шаге total становится равным текущему n, поэтому в конце остаётся последнее значение 4.

Чтобы накапливать сумму, нужно прибавлять к тому, что уже есть:

for n in nums:
    total = total + n   # или короче: total += n
print(total)  # 10

Разница между total = n и total += n тут принципиальная: первое заменяет, второе добавляет.

3

Кстати, для простой суммы списка цикл вообще не нужен — есть встроенная функция:

print(sum(nums))  # 10

Ваш ответ

Войдите, чтобы ответить на вопрос.