Я запустил следующий код в Python 2.7 и получил ошибку. Зачем?Python - TypeError: объект 'float' не имеет атрибута '__getitem__'
КОД:
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))
Запуск следующее: у = triangle_area (10.1,1.1,11.2)
Производит эту ошибку: Traceback (последний звонок последний):
[snip]
....in distance
return math.hypot(p1[0]-p2[0], p1[1]-p2[1])
TypeError: 'float' object has no attribute '__getitem__'
'P1' или' P2' является поплавок objects.It не имеет индексации. – itzMEonTV
Вы отправляете числа с плавающей запятой в функцию 'distance', которая затем пытается их индексировать. Вы не можете этого сделать. Что вы ожидаете от этого? – TigerhawkT3
Я думаю, вы прибили его. Я нашел этот код на странице https://code.activestate.com/recipes/576896-3-point-area-finder/ и, ошибочно, предположил, что он сработал. Выключить, чтобы перекодировать ... – WyomingGeezer