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

Даны три целых числа: A, B, C. Проверить истинность высказывания: «Ровно одно из чисел A, B, C положительное»


a = int(input())
b = int(input())
c = int(input())
a = (A > 0)
b = (B > 0)
c = (C > 0)
if (a > 0) or (b > 0) or (c > 0):
    x = (a and not b and not c) \
    or (not a and b and not c) \
    or (not a and not b and c) \

print("A положительно: ", a)
print("B положительно: ", b)
print("C положительно: ", c)

print("Хотя бы одно из чисел A, B, C положительное: ", x)

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

Автор решения: Paitor

Ну раз вы просите натолкнуть, то... в вашем блоке if условие, которое будет равно True, если одно ИЗ чисел A, B, C больше 0. То есть они все могут быть больше 0. А вас просят вывести только те случаи, когда РОВНО ОДНО будет больше 0.

Подсказка в лоб: Одно число должны быть больше ноля, а два других меньше

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

Может просто подсчитать количество положительных чисел?

a = int(input("Введите число A : "))
b = int(input("Введите число B : "))
c = int(input("Введите число C : "))
n = 0
if a > 0:
    n += 1
if b > 0:
    n += 1
if c > 0:
    n += 1
if n == 1:
    print("Ровно одно из чисел A, B, C положительное")
else:
    print("Из чисел A, B, C положительных либо нет, либо больше одного")

Ну а если вам нужно именно логическое выражение, то оно, по сути, очень простое:

if (a >  0 and b <= 0 and c <= 0) or \
   (a <= 0 and b >  0 and c <= 0) or \
   (a <= 0 and b <= 0 and c >  0):
    print("Ровно одно из чисел A, B, C положительное")

Ну и напоследок, извращённо-питонное - вся программа в одну строчку :) :

print("Ровно одно из чисел A, B, C положительное" if len(list(filter(lambda x: (x > 0), [int(input(f"Введите число {c} : ")) for c in "ABC"]))) == 1 else "Из чисел A, B, C положительных либо нет, либо больше одного")
→ Ссылка