Python - TypeError:' float'对象没有属性' __ getitem __'

时间:2015-08-27 21:09:11

标签: python math geometry

我在Python 2.7中运行了以下代码并出现错误。为什么呢?

CODE:

def triangle_area(a, b, c):
    """
    Returns the area of a triangle given the length of three sides
    Code source: [here][1]
    """
    def distance(p1, p2):
        return math.hypot(p1[0]-p2[0], p1[1]-p2[1])

    side_a = distance(a, b)
    side_b = distance(b, c)
    side_c = distance(c, a)
    s = 0.5 * ( side_a + side_b + side_c)
    return math.sqrt(s * (s - side_a) * (s - side_b) * (s - side_c))

运行以下内容:     y = triangle_area(10.1,1.1,11.2)

产生此错误:     回溯(最近一次调用最后一次):

[snip]
....in distance
return math.hypot(p1[0]-p2[0], p1[1]-p2[1])
TypeError: 'float' object has no attribute '__getitem__'

1 个答案:

答案 0 :(得分:1)

此代码段中的距离函数假设您将为元素的(x,y)位置传递元组。

所以要计算顶点为(0,0),(0,1),(1,1)的三角形区域,你可以调用

triangle_area((0,0), (0,1), (1,1))