NumApprox라는 클래스가 있는데, 입력 (변수 'x'가 포함 된 수학적 표현식)으로 문자열을 가져오고 그 안에있는 모든 메소드가 다름니다 approachs는 'X'에 대한 숫자 값 주어진 수학 식을 통합하는Python 3.5 클래스 함수에서 평가판을 제거하는 방법
예상 입력 예 :
input = " x ** 2 * log(x) "
input = "1/sqrt(2*pi) * exp(- x **2/2) "
내가 분리하고 문자열 입력에 의해 제공되는 'X'변수를 제어 할 수 있습니다 궁금 해서요 'eval'기능 없이는 수업 내 어디서나 사용할 수 있습니다.
이것은 내가 한 일이지만 'eval'함수와 Python 클래스에 대한 제한된 지식이 맘에 들지 않습니다 ... 'eval'에 대한 더 나은 대안이 있는지 알고 싶습니다. ?
from math import pi, sqrt, exp, log
class NumApprox:
def __init__(self, expr):
self.expr = expr
def pdf(self, x):
self.x = x
self.ev = eval(self.expr.replace('x', 'self.x'))
return self.ev
def integrate_rect_method(self, A, B, n):
...
'eval'을 사용하지 않고 임의의 표현식을 평가하려면 일종의 파서를 살펴 봐야 할 것입니다. – Iluvatar
[SymPy] (http://www.sympy.org/)와 같은 모듈을 더 잘 사용하십시오. – furas
제쳐두고'self.expr.replace ('x', 'self.x')는 다음과 같은 경우에 무엇을 할 것이라고 생각하십니까? 'expr'은'exp (x)'입니까? – donkopotamus