не могу решить задачу 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 положительных либо нет, либо больше одного")