提前致谢!我正在编写一个程序来检查是否 a 是真实的,然后返回真或错误。我需要在平等标志上将其拆分,然后检查列表中的第一项是否等于第二项,反之亦然。这是我到目前为止所拥有的:

def s_equation(a):
    equal=a.split("=")
有帮助吗?

解决方案

您可以使用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

其他提示

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

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

编辑:数学 击败我, ,尽管我建议使用 ast.literal_eval 代替 eval 除非您相信您会收到的输入。

您真的没有提供足够的信息来很好地回答您的问题。您是否要将其作为身份(即测试代数)或瞬时平等测试?

对于前者,(首先安装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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top