0

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

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

3 回答 3

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

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

编辑:数学打败了我,虽然我建议使用ast.literal_eval而不是,eval除非你相信你会收到的输入。

于 2010-11-09T15:03:35.857 回答
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
于 2010-11-09T15:07:14.270 回答
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
于 2010-11-09T16:20:24.940 回答