Сумма чисел из стандартного ввода

Необходимо написать программу, которая считывает со стандартного ввода целые числа по одному числу и после первого введённого нуля - выводит сумму полученных на вход чисел.

Не понимаю - где ошибка?

text = int(input("Вводите значение: "))  # вводим элементы массива

while text != (int(0)):  # цикл - до тех пор, пока -text != 0, добавляет значения в массив -a
    a.append(text)  # добавляем значение в массив

    if text == (int(0)):  # если -text == 0, выводим сумму всех элементов массива
        print(sum(a))  # суммируем между собой все элементы массива

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

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

У вас не объявлен список a. Бесконечный цикл работает не так, как нужно. На каждой итерации цикла после добавления нужно запрашивать новое значение.

text = int(input("Вводите значение: "))  # вводим элементы массива
a = []

while text != 0:  # цикл - до тех пор, пока -text != 0, добавляет значения в массив -a
    a.append(text)  # добавляем значение в массив
    text = int(input("Вводите значение: "))

print(sum(a))  # суммируем между собой все элементы массива
→ Ссылка
Автор решения: NoName

Вы вводите число одни раз в самом начале.

Допустим, вы ввели 9. Далее цикл выполняется, пока 9 != 0, то есть бесконечно, так как новые числа не вводятся. Нужно просто добавить ввод данных в цикл.


Также можно перенести вывод суммы из цикла, чтобы не проверять условие каждый раз. И ещё, нет никакого смысла в записи int(0)

Например, можно сделать так:

arr = []
num = int(input("Вводите значение: "))
while num != 0:
    num = int(input("Вводите значение: "))
    arr.append(num)

print(sum(arr))
→ Ссылка
Автор решения: CrazyElf

Лучше в данном случае использовать "бесконечный цикл", чтобы ввод значения не делать два раза в разных местах:

a = []
while True:
    num = int(input("Вводите значение: ")) 
    if num == 0:
        print(sum(a))
        break
    a.append(num)

Ну а ошибки и недочёты вам уже все написали в других ответах.

→ Ссылка
Автор решения: mkkik

Начиная с в язык добавлен walrus operator :=, использование которого может немного сократить объем кода в таких задачах, как в вопросе.

Также можно избежать явного сравнения с 0, полагаясь на неявное приведение к bool.

s = 0
while number := int(input("input: ")):
    s += number
print(s)
→ Ссылка