TypeError: объект "float" не может быть вызван
Я пытаюсь использовать значения из массива в следующем уравнении:
for x in range(len(prof)):
PB = 2.25 * (1 - math.pow(math.e, (-3.7(prof[x])/2.25))) * (math.e, (0/2.25)))
При запуске я получаю следующую ошибку:
Traceback (most recent call last):
File "C:/Users/cwpapine/Desktop/1mPro_Chlavg", line 240, in <module>
PB = float(2.25 * (1 - math.pow(math.e, (-3.7(prof[x])/2.25))) * (math.e, (0/2.25)))
TypeError: 'float' object is not callable
это, вероятно, что-то простое, но я не могу это понять. Любая помощь будет
очень оценили. Спасибо заранее
Ответы
Ответ 1
Отсутствует оператор, вероятно, *
:
-3.7 need_something_here (prof[x])
"Не вызывается" возникает из-за того, что скобка - и отсутствие оператора, который бы переключил скобку в операторы приоритета - заставляет Python попытаться вызвать результат -3.7
(float) как функцию, которая не допускается.
В этом случае скобки также не нужны, может быть достаточно/правильно следующее:
-3.7 * prof[x]
Как указывает Леголас, есть и другие вещи, которые, возможно, необходимо решить:
2.25 * (1 - math.pow(math.e, (-3.7(prof[x])/2.25))) * (math.e, (0/2.25)))
^-- op missing
extra parenthesis --^
valid but questionable float*tuple --^
expression yields 0.0 always --^
Ответ 2
Проблема заключается в -3.7(prof[x])
, который выглядит как вызов функции (обратите внимание на parens). Просто используйте *
, как этот -3.7*prof[x]
.
Ответ 3
Все из-за '(-3.7 (prof [x])' - например, вы упустили оператора.
Ответ 4
Вы забыли *
между -3.7
и (prof[x])
.
Таким образом:
for x in range(len(prof)):
PB = 2.25 * (1 - math.pow(math.e, (-3.7 * (prof[x])/2.25))) * (math.e, (0/2.25)))
Кроме того, кажется, что отсутствует (
, поскольку я считаю 6 раз (
и 7 раз )
, и я думаю, что (math.e, (0/2.25))
отсутствует вызов функции (возможно, math.pow
), но это просто дикая догадка).
Ответ 5
Я получил эту ошибку, когда пытался вызвать метод, когда свойство с тем же именем было доступно.
float = 4.99
float("1")