我正在爲數學計算器編寫代碼,並且遇到問題。當我要求用戶輸入一個函數來派生時,他們輸入一個數字,然後輸入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 –