У меня есть некоторые математические функции (представленные в виде строк) в файле:Заменить «**» с «Math.pow» в Python
1+a**(b/(3*a+1))
(1+a)**(b/(3*a+1))
...
Как я могу преобразовать все **
с в моих строках в math.pow
?
Редактировать: Я пытаюсь решить следующее: У меня есть много этих функций для оценки, я не могу тратить слишком много времени на одно.
Иногда функции выглядят так:
(3**100**100**2)
Python попытаться оценить его, что очень долго. Я хотел бы иметь ошибку вместо как:
>>> math.pow(3, math.pow(100, 100))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: math range error
Edit 2: Thanx все для ответа, я, наконец, нашел, как это сделать, и ваши ответы и комментарии помогли мне. я просто должен был заставить поплавок деление с следующей строкой в верхней части моего файла:
from __future__ import division
вы хочет 'Math.pow (1 + а, (б/(3 * а + 1)))' ? –
Вы знаете, что есть правильный оператор '**' в python? –
Для этого требуется более простая замена текста; вам нужно создать правильное дерево разбора каждого выражения и регенерировать выражение после замены оператора вызовом функции. –