我正在为数学计算器编写代码,并且遇到问题。当我要求用户输入一个函数来派生时,他们输入一个数字,然后输入x,如3x,而不是3 * x。该代码崩溃,因为它无法解析它。为了解决这个问题,我有一个功能来清理它,但它甚至不会因为某种原因运行。由于某种原因代码不会完全运行
class Derivatives:
def __init__(self):
x=sympy.Symbol('x')
self.func=self.clean_func((input("Enter f(x): ")))
print(self.func)
print(sympy.diff(self.func, x))
def clean_func(self, func):
clean_func=""
print("c")
for i in range(len(func)):
if func[i].isalpha or isinstance(func[i], int) or func[i] in self.math_symbols :
if func[i]== "^" :
clean_func+="**"
else:
clean_func+=func[i]
for c in range(48, 57) :
if func[i:i+1] == (chr(c) + 'x') :
clean_func+="*" #helps with parsing
return clean_func
,我得到这个错误在a=Derivatives()
Enter f(x): 3x
Traceback (most recent call last):
File "<ipython-input-48-f4cd19afbde9>", line 1, in <module>
a=Derivatives()
File "/Volumes/PROJECTS/M_series.py", line 71, in __init__
x=sympy.Symbol('x')
File "/Users/thomastierney/anaconda/lib/python3.5/site-packages/sympy/core/function.py", line 1691, in diff
return Derivative(f, *symbols, **kwargs)
File "/Users/thomastierney/anaconda/lib/python3.5/site-packages/sympy/core/function.py", line 1018, in __new__
expr = sympify(expr)
File "/Users/thomastierney/anaconda/lib/python3.5/site-packages/sympy/core/sympify.py", line 324, in sympify
raise SympifyError('could not parse %r' % a, exc)
SympifyError: Sympify of expression 'could not parse '3x'' failed, because of exception being raised:
SyntaxError: invalid syntax (<string>, line 1)
所以我把你干净的FUNC键,把它放在我的数学课,因为这是一类具有一许多子类,所以我会清理大量的fn_str,然后只是衍生物。然而,我不认为我能够访问它,因为它在我的派生类 –
的外侧我试图只做Math.clean(fn_str),但是我得到它缺少“fn_str”的补充,所以我很困惑 –
只要(a)它仍然是类方法,(b)它可以访问NUMCHARS,VARCHARS,OPCHARS,LEGALCHARS,它应该可以很好地作为Math类的一部分。你能分享你目前的实际代码吗? hugh_bothwell at hotmail dot com –