这是一个用于查找三个数字是否创建三角形的程序。当然,有更好的方法可以做到这一点,并且当假设目标是寻找三角形时,函数实际上应该为假。然而,困扰我的是,当我输入某些数字时,也就是说,当a = b = c时,我应该回到真,但我没有。
这是我的代码:
def is_triangle(a, b, c):
import math
cos_c = float(((a**2)+(b**2)-(c**2))) / (2*a*b)
cos_a = float(((b**2)+(c**2)-(a**2))) / (2*b*c)
cos_b = float(((c**2)+(a**2)-(b**2))) / (2*c*a)
if -1<=cos_a<=1 and -1<=cos_b<=1 and -1<=cos_c<=1:
ang_a = math.acos(cos_a)
ang_b = math.acos(cos_b)
ang_c = math.acos(cos_c)
total = (ang_c + ang_a + ang_b) * (180/math.pi)
print total
if total == 180:
return True
else:
return False
else:
return False
print total
函数是为了确保总数实际上等于180。
例如:
如果我用:
运行该函数is_triangle(1,2,2)
我回来总计= 180.0 =真。到目前为止一切都很好。
如果我用:
运行该函数is_triangle(1,2,3)
我回来总计= 180.0 =真。虽然对于实际的三角形,这些数字不起作用,但它仍然可以正常运行。
但是,如果我用:
运行该函数is_triangle(2,2,2)
我回来总计= 180.0 =假。这是我很困惑的地方,因为我应该回归真实。为什么它给我错?