我在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__'
答案 0 :(得分:1)
此代码段中的距离函数假设您将为元素的(x,y)位置传递元组。
所以要计算顶点为(0,0),(0,1),(1,1)的三角形区域,你可以调用
triangle_area((0,0), (0,1), (1,1))