Цикл While. Сумма чисел

Нужно считывать целые числа до тех пор, пока не встретится фраза: "The End". Вывести сумму считанных чисел.

summ = 0
s = input()
while s != "The End":
    summ +=  int(s)
    s = input(s)
print (summ)

ВВОД:

3
5
The End

Выводит 358, хотя должен выводить8.


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

Автор решения: Эникейщик

То, что в скобках input(), то выводится на печать. Поэтому уже введенные значения (3 и 5) печатаются, а потом и сумма (8). Вот и получается 358.

s = input() # убрать s из скобок
→ Ссылка
Автор решения: AnnaBazueva

Walrus

Используя моржовый оператор присваивания - walrus,
можно использовать функцию input() один раз в проверяемом циклом условии.

Стабильный код выглядит так:

summ = 0
while (s := input()) != "The End":
    if s[1:].isdecimal() if s[0] == "-" else s.isdecimal():
        summ += int(s)
    else:
        print("Цикл прерван, на вход ожидаются целые числа.")
        break

print(f"Сумма чисел: {summ}")

Для оператора ”walrus” есть PEP 572,
начните знакомство с раздела Примеры (Examples)

→ Ссылка