Сумма чисел из стандартного ввода
Необходимо написать программу, которая считывает со стандартного ввода целые числа по одному числу и после первого введённого нуля - выводит сумму полученных на вход чисел.
Не понимаю - где ошибка?
text = int(input("Вводите значение: ")) # вводим элементы массива
while text != (int(0)): # цикл - до тех пор, пока -text != 0, добавляет значения в массив -a
a.append(text) # добавляем значение в массив
if text == (int(0)): # если -text == 0, выводим сумму всех элементов массива
print(sum(a)) # суммируем между собой все элементы массива
Ответы (4 шт):
У вас не объявлен список a.
Бесконечный цикл работает не так, как нужно. На каждой итерации цикла после добавления нужно запрашивать новое значение.
text = int(input("Вводите значение: ")) # вводим элементы массива
a = []
while text != 0: # цикл - до тех пор, пока -text != 0, добавляет значения в массив -a
a.append(text) # добавляем значение в массив
text = int(input("Вводите значение: "))
print(sum(a)) # суммируем между собой все элементы массива
Вы вводите число одни раз в самом начале.
Допустим, вы ввели 9. Далее цикл выполняется, пока 9 != 0, то есть бесконечно, так как новые числа не вводятся. Нужно просто добавить ввод данных в цикл.
Также можно перенести вывод суммы из цикла, чтобы не проверять условие каждый раз.
И ещё, нет никакого смысла в записи int(0)
Например, можно сделать так:
arr = []
num = int(input("Вводите значение: "))
while num != 0:
num = int(input("Вводите значение: "))
arr.append(num)
print(sum(arr))
Лучше в данном случае использовать "бесконечный цикл", чтобы ввод значения не делать два раза в разных местах:
a = []
while True:
num = int(input("Вводите значение: "))
if num == 0:
print(sum(a))
break
a.append(num)
Ну а ошибки и недочёты вам уже все написали в других ответах.
Начиная с python-3.8 в язык добавлен walrus operator :=, использование которого может немного сократить объем кода в таких задачах, как в вопросе.
Также можно избежать явного сравнения с 0, полагаясь на неявное приведение к bool.
s = 0
while number := int(input("input: ")):
s += number
print(s)