我正在尝试解决一个简单的代数问题,解决方案可能是真实且复杂的。
我只在这里寻找正面和实际的解决方案,在这种情况下,我编写了以下示例:
大多数情况下,我试图向答案列表中的每个成员询问python,“类型(ans)是浮点型,然后询问其是否为阳性”。
res = sp.solve(self.dflux * (self.u - u_0) - (self.flux - flux_0), self.u)
for it in res:
print(it)
if(type(it) is float):
print('here')
print(type(res),res)
例如在以下情况下
<class 'list'> [-0.707106781186548, 0.0, 0.707106781186548]
我根本看不到“这里”。
下一种情况也是如此
<class 'list'> [0.0, 0.793216505472184, -0.398143686499772 - 0.949955974569196*I, -0.398143686499772 + 0.949955974569196*I, 0.603391747263908 - 2.16302515309992*I, 0.603391747263908 + 2.16302515309992*I]
我希望第一个示例在这里看到3次,第二个示例在这里看到两次,但是什么也没有。
新部分:
我对以下版本的脚本进行了稍微更改:
for it in res:
print(it)
print(isinstance(it,float),type(it))
if(isinstance(it,float) == True):
print('here')
我在第一种情况下看到的输出是下一个:
-0.707106781186548
False <class 'sympy.core.numbers.Float'>
0.0
False <class 'sympy.core.numbers.Float'>
0.707106781186548
False <class 'sympy.core.numbers.Float'>
<class 'list'> [-0.707106781186548, 0.0, 0.707106781186548]
这种行为对我来说真的很奇怪。蟒蛇一方面说不是浮点数,但另一方面却说是浮点数。
答案 0 :(得分:2)
这似乎是SymPy的古怪之处,其中sumpy Float!= python浮点数。 (请注意大写)
观察:
import sympy
x=float(16)
x
16.0
isinstance(x,float)
True
y=sympy.Float(x)
y
16.0000000000000
type(y)
sympy.core.numbers.Float
isinstance(y,float)
False
isinstance(y,sympy.Float)
True
所以我想说类型检查的解决方案在最后一行sympy.Float
答案 1 :(得分:0)
在python中有一个功能:
isinstance(0.56, float)
>> true
编辑
无需执行if(expresion == True)
,您只需执行if(expresion)
在您的情况下,您的浮点数不是python浮点数,而是sympy浮点数,因此您只需要这样做:
import sympy
isinstance(sympy.Float(0.56),sympy.Float)
for it in res:
if(isinstance(it,sympy.Floa)):
print('here')