Сложение четных чисел, пока не появится пустая строка
На вход с клавиатуры подаются числа (по одному). Нужно вывести на экран сумму всех четных чисел. Ввод прекращается, если введена пустая строка (""). При любой ситауации, когда не попадаются четные числа, вывести на экран нужно 0 (например, числа не были введены вообще или были введены только нечетные числа).
summ = 0
while 1:
a = int(input())
if a == ('') : break;
for i in range(a):
if i % 2 == 0:
summ += i
print(summ)
ValueError: invalid literal for int() with base 10: ''
Как сделать так, что бы ввод заканчивался на пустой строке. Выдает ошибку что пустая строка, это не целое число. Как их связать?
Ответы (4 шт):
Проблема в том, что вы сначала делаете приведение ввода к числу, а потом проверяете, что было введено. Естественно, пустую строку в число преобразовать нельзя и возникает ошибка. Стоит перенести приведение ввода к числу в другое место:
summ = 0
while True:
a = input()
if not a:
break
for i in range(int(a)):
if i % 2 == 0:
summ += i
print(summ)
Либо сделать ещё проще:
result = sum(filter(lambda x: not x % 2, map(int, iter(input, ''))))
print(result)
Как вариант
summ = 0
a = 0
while a != "":
if int(a) % 2 == 0:
summ += int(a)
a = input()
print(summ)
result = sum(x for x in map(int, iter(input, '')) if not x % 2)
print(result)
Хорошее применение для моржового оператора:
s = 0
while w := input():
a = int(w)
if a % 2 == 0:
s += a
print(s)