Надо написать код, который суммирует заранее три заданных числа, но если есть число меньше нуля, то код его игнорирует. Python

a, b, c, = int(input()), int(input()), int(input())
if a and b and c < 0:
   a, b, c = 0
else:
    print(a + b + c)

Почему мой код не работает? Объясните, пожалуйста.


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

Автор решения: Alpensin
if a and b and c < 0:

Для интерпретатора означает: Если a True и b True и c < 0, то ...

А у вас всё же другая цель, проверить что они больше нуля. Подсказка: Вот это int(input()), int(input()), int(input()) вернёт кортеж. Можно посчитать сумму элементов кортежа, больших 0, пробежавшись по нему, и отсеяв лишнее.

Решение:

to_sum = int(input()), int(input()), int(input())
result_sum = sum(el for el in to_sum if el > 0)
print(result_sum)
→ Ссылка
Автор решения: Андрей Крузлик
a, b, c, = int(input()), int(input()), int(input())
if a < 0 or b < 0 or c < 0:
   a, b, c = 0, 0, 0
else:
    print(a + b + c)
→ Ссылка
Автор решения: Zhihar

вариант 1:

res = sum(i for i in (a, b, c) if i >= 0)

вариант 2:

res = sum(filter(lambda i: i >= 0, (a, b, c)))

вариант 3:

res = sum(i if i >= 0 else 0 for i in (a, b, c))

вариант 4:

res = sum((0, i)[i >= 0] for i in (a, b, c))

вариант 5:

res = sum(map(lambda i: (0, i)[i >= 0], (a, b, c)))

вариант 6:

res = sum(map(lambda i: i if i >= 0 else 0, (a, b, c)))

вариант 7:

res = sum(len('*' * i) for i in (a, b, c))

вариант 8:

res = 0

for i in (a, b, c):
    if i >= 0:
        res += i

вариант 9:

from functools import reduce

res = reduce(lambda i, j: (j + i) if j >= 0 else i, (a, b, c))
→ Ссылка