Findind площадь треугольника приводит к ошибке: объект 'float' не вызывается - PullRequest
0 голосов
/ 10 июля 2019

Я создаю тестовую программу, чтобы найти область трехмерного треугольника, подобную этой: эта У меня проблема с последней строкой, которая, как я ожидаю, будет идеальной, но по-прежнему будет приведена к ошибке типа. 1003Основная функция такова:

def triangle3d(width, height):
    triangle2d = width*height/2
    length = math.cos(random.randint(3, 5))
    triangle3d = triangle2d*length
    assert (width*height*length)/2 == triangle3d;
    return triangle3d(triangle3d, triangle3d-2)
print(triangle3d(2, 4))

Я ожидал, что он просто распечатает один номер, но это привело к сообщению об ошибке:

Traceback (most recent call last):
  File "C:/Users/Public/test.py", line 11, in <module>
    print(triangle3d(2, 4))
  File "C:/Users/Public/test.py", line 9, in triangle3d
    return triangle3d(triangle3d, triangle3d-2)
TypeError: 'float' object is not callable

Спасибо!

1 Ответ

2 голосов
/ 10 июля 2019

в вашей функции вы присваиваете

triangle3d = triangle2d*length

только для того, чтобы попытаться вызвать его позже (здесь возникает ошибка)

return triangle3d(triangle3d, triangle3d-2)

, но если вы просто переименуете локальныйпеременная, с которой вы столкнетесь RecrusionError ...

, ваша length может быть отрицательной.это то, что вы ожидаете?

...