如何在python中编写字符串方程求解器?

时间:2010-11-09 15:01:20

标签: python equation algebra solver

提前致谢! 我正在编写一个程序来检查a是否为真,然后返回True或False。我需要在等号处将其拆分,然后检查列表中的第1项是否等于第二项,反之亦然。以下是我到目前为止的情况:

def s_equation(a):
    equal=a.split("=")

3 个答案:

答案 0 :(得分:4)

left, right = a.split("=")
assert left == right

如果你想要一个有用的答案,你需要给我们更多的细节。您是否正在尝试编写完整的计算机代数系统(例如Mathematica)?这是一个biiiiig项目,已经完成了好几次。考虑使用类似Sage的内容。

修改:数学beat me to the punch,虽然我建议使用ast.literal_eval代替eval,除非您信任您将收到的输入。

答案 1 :(得分:3)

您可以使用eval()来评估等式的每个部分:

def s_equation(a):
    left, right = a.split('=')
    return eval(left) == eval(right)

一些测试:

>>> s_equation('1+1+1=3')
True
>>> s_equation('2*2=8')
False

答案 2 :(得分:0)

您没有提供足够的信息来回答您的问题。你想把它作为一个身份(即测试代数)或瞬时相等来测试吗?

对于前者,(首先安装sympy):

import sympy

def s_equation(a):
    x = sympy.Symbol('x')
    y = sympy.Symbol('y')
    left, right = a.split('=')
    return eval (left + '==' + right)

用法:

s_equation('x+x = x*2')
#True
s_equation('x+y**2 = y+x**2')
#False