2014-04-01 15 views
1
>>>from sympy.parsing.sympy_parser import (parse_expr, ... standard_transformations, function_exponentiation) 
>>> transformations = standard_transformations + (function_exponentiation,) 
>>>parse= parse_expr('2x', transformations=transformations) 
parse = parse_expr("2x", transformations=transformations) 
>>> parse.coeff("x",0) 
2 
>>> parse.coeff("x") 
2 
>>> parse = parse_expr("2x+5", transformations=transformations) 
>>> parse.coeff("x") 
2 
>>> parse.coeff("x",0) 
5 

我對python和sympy很新。 這裏的問題是,任何時候我想得到常數0它返回x的係數。但是當常數不爲零時不會發生這種情況(如第二個等式所示)。我試圖用它來解決其中我不知道用戶輸入的線性方程式。但是當x之後沒有連續的時候它會給我一個錯誤的答案。Sympy解析器不通過正確的常量

回答

0

有Github上一些討論:https://github.com/sympy/sympy/issues/5657

一種方式來做到這一點是要轉換爲多項式:

>>> (2*x + 3).as_poly() 
Poly(2*x + 3, x, domain='ZZ') 
>>> (2*x + 3).as_poly().nth(0) 
3 
>>> (2*x + 3).as_poly().nth(1) 
2 
>>> (2*x).as_poly().nth(0) 
0 
>>> (2*x).as_poly().nth(1) 
2 

不幸的是轉換爲Poly第一較慢。