Sympy - 比较两个字符串输入会导致意外结果

时间:2014-06-16 06:40:06

标签: python sympy

我在解析两个输入表达式时遇到了一个新问题:

我想比较两个输入记录(字符串)。我做过什么喷射:

arg1=parse_expr(sys.argv[1])                   #Here it has to/can use the complete simplified expression
arg2=parse_expr(sys.argv[2], evaluate=False)   #Here it has to use the unsimplified expression

if(arg1==arg2 and arg1-arg2==0):
     print "correct"

if(arg1!=arg2 and arg1-arg2==0):
     print "go on calculating"

if(arg1!=arg2 and arg1-arg2!=0):
     print "wrong"

当我只输入两个分数时,我得不到我实际期望的结果。例如:2/3 == 2/3 =>错误但是2 / 3-2 / 3 ==>真

我也尝试使用“sympify”和“kernS”代替“parse_expr”,结果几乎相同。

这里我要输入2/3和4/6,这显然是相同的分数但不相同。我想比较原始表达式中的两个字符串。在这里,我应该得到返回值“继续计算”,但我会得到“正确”。这是因为同情只是简单地表达了第二个表达式并且比较了2/3 == 2/3

任何人都可以帮助我吗? 非常感谢!

1 个答案:

答案 0 :(得分:3)

我建议您使用

if (arg1.as_numer_denom() == arg2.as_numer_denom() and 
    simplify(arg1 - arg2) == 0):

和其他测试类似。