什么应该返回True,返回False。这是为什么?

时间:2018-02-24 00:39:58

标签: python

这是一个用于查找三个数字是否创建三角形的程序。当然,有更好的方法可以做到这一点,并且当假设目标是寻找三角形时,函数实际上应该为假。然而,困扰我的是,当我输入某些数字时,也就是说,当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 =假。这是我很困惑的地方,因为我应该回归真实。为什么它给我错?

0 个答案:

没有答案