Гипотенуза, если треугольник прямоугольный, будет наибольшим из a, b и c. Вы можете использовать это, чтобы избежать дублирования теста 3 раза (это принцип «не повторяйте себя»). Второе, чего следует избегать, это if something: return True else: return False
. Обычно это лучше выражать просто return something
. В-третьих, функции могут принимать аргументы, а не полагаться на глобальные переменные: это облегчает понимание, и тогда меньше вероятность того, что функции будут мешать друг другу. a * a
мне легче понять, чем a ** 2
, но это личный вкус. Собираем все это вместе:
def is_approximately_right_angled(a, b, c):
a, b, c = sorted([a, b, c])
return abs(a * a + b * b - c * c) < 0.1
a = input('enter a ')
b = input('enter b ')
c = input('enter c ')
print is_approximately_right_angled(a, b, c)
Если это не работает, вы можете ускорить разработку, добавив несколько проверок. Если вы писали большую программу, вы можете писать модульные тесты, но здесь только некоторые утверждения в модуле избавят вас от необходимости каждый раз вводить a, b, c для тестирования.
Я бы добавил что-то вроде этого (перед строкой a = input...
):
assert is_approximately_right_angled(3, 4, 5)
assert is_approximately_right_angled(3, 5, 4)
assert is_approximately_right_angled(3, 2, 3.61)
assert not is_approximately_right_angled(3, 5, 5)
Имея эти строки, вы можете иметь некоторую уверенность в коде, прежде чем начнете вводить числа. Если вы обнаружите случаи, когда код не работает, вы можете добавить их в качестве дополнительных проверок.