加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 检测变量是否为sympy类型

发布时间:2020-12-20 11:42:42 所属栏目:Python 来源:网络整理
导读:我有一个变量,可能是也可能不是一个同情类.我想将它转换为浮点数,但我在以一般方式执行此操作时遇到问题: $pythonPython 2.7.3 (default,Dec 18 2014,19:10:20) [GCC 4.6.3] on linux2 import sympy x = sympy.sqrt(2) type(x)class 'sympy.core.power.Pow'
我有一个变量,可能是也可能不是一个同情类.我想将它转换为浮点数,但我在以一般方式执行此操作时遇到问题:

$python
Python 2.7.3 (default,Dec 18 2014,19:10:20) 
[GCC 4.6.3] on linux2
>>> import sympy
>>> x = sympy.sqrt(2)
>>> type(x)
<class 'sympy.core.power.Pow'>
>>> y = 1 + x
>>> type(y)
<class 'sympy.core.add.Add'>
>>> z = 3 * x
>>> type(z)
<class 'sympy.core.mul.Mul'>
>>> if isinstance(z,sympy.core):
...     z = z.evalf(50) # 50 dp
... 
Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
TypeError: isinstance() arg 2 must be a class,type,or tuple of classes and types

我将测试x,y,z以转换为浮点数.请注意,我不能在x,y和z上运行evalf()而不进行检查,因为它们可能已经是整数或浮点数,这会引发异常.

不幸的是,sympy.sympify()没有转换为浮点数.如果它确实那么这将是我的问题的理想解决方案:

>>> sympy.sympify(z)
3*sqrt(2)
>>> type(sympy.sympify(z))
<class 'sympy.core.mul.Mul'>

解决方法

那这个呢:

isinstance(z,tuple(sympy.core.all_classes))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读