我在解析两个输入表达式时遇到了一个新问题:
我想比较两个输入记录(字符串)。我做过什么喷射:
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
任何人都可以帮助我吗? 非常感谢!
答案 0 :(得分:3)
我建议您使用
if (arg1.as_numer_denom() == arg2.as_numer_denom() and
simplify(arg1 - arg2) == 0):
和其他测试类似。