Определить знак введенного числа, затем сложить положительные числа

a = int(input()) #пользователь вводит число от (-бесконечность;бесконечность)
b = int(input()) #пользователь вводит число от (-бесконечность;бесконечность)
c = int(input()) #пользователь вводит число от (-бесконечность;бесконечность)
if 0 < a:
    plus1 = a
elif 0 > a:
    minus1 = a
elif 0 < b:
    plus2 = b
elif 0 > b:
    minus2 = b
elif 0 < c:
    plus3 = c
elif 0 > c:
    minus3 = c #цикл определяет знак числа
else:
    plus1 = a
    plus2 = b
    plus3 = c
    print(plus1 + plus2 + plus3) #сложение положительных чисел

Проблема в том, что когда я ввожу цифры, то числа не складываются.


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

Автор решения: tomato-magnet-regulato
a = int(input()) 
b = int(input()) 
c = int(input()) 

nums = [a,b,c]
count = 0

for n in nums:
    if n > 0:
        count += n

print(count)

можно как-то так(наверное)

→ Ссылка
Автор решения: MarianD

Проблема вашей программы заключается в том, что когда ваше первое введенное число (a) будет например положительным, выполнится только первая команда (plus1 = a) и весь остальной код будет проигнорирован.

Почему проигнорирован?

Потому, что вся ваша программа состоит только из ветвей одного и того-же самого if, и во всяком случае может исполниться только код одной ветви.


Как это исправить?

  • Для всякого введенного числа (a, b, c) используйте отдельный if, т.к. эти числа независимы друг от друга.

  • Переменные minus1, minus2, minus3 совсем не нужны, но

  • нужно сначала переменным plus1, plus2, plus3 присвоить нуль.

  • Ваше заключительное else надо тем самым удалить.

plus1 = plus2 = plus3 = 0

if 0 < a:
    plus1 = a
if 0 < b:
    plus2 = b
if 0 < c:
    plus3 = c
    
print(plus1 + plus2 + plus3) #сложение положительных чисел
→ Ссылка