如何用Python编写字符串方程求解器?
提前感谢大家!
我正在写一个程序,用来检查 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