This Python 3 based function returns if a triangle is or isn't right-angled given side lengths x, y, and z. I'm having an issue simplifying the conditional statement. Should this function check for acute, right, obtuse, scalene, isosceles, and equilateral angles, or are there conditions I can skip? Any feedback is appreciated.
def right_angled(x, y, z):
"""This function returns if a triangle is or isn't
right-angled given side lengths x, y, and z."""
p = x + y + z #triangle perimeter
a_sym = p / 180 #triangle perimeter divided by 180
one = x * a_sym #angle one
two = y * a_sym #angle two
three = z * a_sym #angle three
if one and two or one and three or two and three == 90:
return "The triangle is right-angled."
elif one and two and three == 180:
return "The triangle is right-angled." #next conditional(s)?
else:
return "The triangle is not right-angled."
print(right_angled(4, 5, 6))
解决方案
Your function is completely wrong.
You cannot find angle as ratio of a side and perimeter.
Expression if one and two does not calculate sum - and here is logical (boolean) operator.
To find whether rectangle is right, you can exploit Pythagorean theorem
def right_angled(a, b, c):
if (a*a+b*b==c*c) or (c*c+b*b==a*a) or (a*a+c*c==b*b) :
return "The triangle is right-angled."
else:
return "The triangle is not right-angled."
Or just return boolean result
return (a*a+b*b==c*c) or (c*c+b*b==a*a) or (a*a+c*c==b*b)