如何用Python编写字符串方程求解器?

0 投票
3 回答
3460 浏览
提问于 2025-04-16 06:47

提前感谢大家! 我正在写一个程序,用来检查 a 是否为真,然后返回真或假。我需要在等号处分开,然后检查列表中的第一个项目是否等于第二个项目,反之亦然。以下是我目前的代码:

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

3 个回答

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
4

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

如果你想要一个有用的答案,那你得给我们更多的细节。你是想写一个完整的计算机代数系统(比如说Mathematica)吗?这可是个大工程,已经有很多人做过了。你可以考虑使用像Sage这样的工具。

补充一下:数学方面的比我早一步,不过我建议你用ast.literal_eval,而不是eval,除非你非常信任你将要接收到的输入。

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

撰写回答