Надо написать код, который суммирует заранее три заданных числа, но если есть число меньше нуля, то код его игнорирует. 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))