首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用关系运算符计算表达式时与渐近不一致的行为

使用关系运算符计算表达式时与渐近不一致的行为
EN

Stack Overflow用户
提问于 2015-06-01 19:22:10
回答 2查看 72关注 0票数 1

当我使用渐近来解析一个带有大于运算符的表达式时,我得到了一个以StrictGreaterThan为根的表达式。但是,sympify会替换==运算符,将表达式的计算结果设为布尔值False。我如何避免使用==计算表达式,以便像使用>运算符一样获得一个通用表达式?

代码语言:javascript
复制
from sympy import *

In [2]: s1 = 'a - 4 > b + 5'

In [3]: expr1 = sympify(s1)

In [4]: type(expr1)

Out[4]: sympy.core.relational.StrictGreaterThan

In [5]: s2 = 'a - 4 == b + 5'

In [6]: expr2 = sympify(s2)

In [7]: type(expr2)

Out[7]: bool
EN

回答 2

Stack Overflow用户

发布于 2015-06-01 19:33:19

我解决这个问题的一种方法是将RHS转换为LHS,然后将字符串渐近化()。

例如,将LHS == RHS更改为LHS - RHS

代码语言:javascript
复制
exprStr =  'a - 4 == b + 5'
indOfEq = exprStr.find('==')
if indOfEq != -1:
   splitExpr  = exprStr.split('=')
   if len(splitExpr)==2:
      exprStr = splitExpr[0]+'-('+splitExpr[1]+')'
expr2 = sympify(exprStr )
票数 0
EN

Stack Overflow用户

发布于 2015-06-01 20:00:30

正如在http://docs.sympy.org/dev/gotchas.html中所解释的,

双等号(==)用于测试相等性。然而,这是对表达式的精确测试,而不是符号测试。

您可以使用sympy.Eq,如下所示

代码语言:javascript
复制
In [54]: sympy.Eq(sympy.abc.a - 3, sympy.abc.b + 5)
Out[54]: a - 3 == b + 5

In [55]: sympy.GreaterThan(sympy.abc.a - 3, sympy.abc.b + 5)
Out[55]: a - 3 >= b + 5

无论如何,这似乎真的不一致。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30572213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档