复杂错误的无效比较

时间:2015-08-21 15:32:47

标签: python

我有以下代码,其中temp[count]包含一些complex个变量。但是我在行TypeError: Invalid comparison of complex中收到错误if temp[count] > 0 and isinstance(temp[count], complex) == 0

if temp[count] > 0 and isinstance(temp[count], complex) == 0:
    print(temp[count])
    count += 1 

修改

if not isinstance(temp[count], complex): 
    print('T', temp[count]) 
    if temp[count] > 0: 
        print('Made it') 

print('T', temp[count])打印一个复数,因此我得到了与以前相同的错误。另外,我做了一个打印(&#39;类型&#39;,类型(temp [count])),它给出了<'class sympy.core.add.Add'>。我该如何解决这个问题?

type[count]包含-1.5 + 0.86*I, -1.5 - 0.86*I, -2, -1.0 + 1.0*I

2 个答案:

答案 0 :(得分:2)

the documentation中所述 -

  

当任何操作数是复数时,<<=>>=运算符将引发TypeError异常。

此外,将复数与任何事物(除了相等)进行比较是没有意义的。

如果您想要做的只是打印数字,如果它不复杂,正如您在评论中所给出的那样 -

  

如果temp [count]不复杂,我想打印(temp [count])。

你可以做 -

if not isinstance(temp[count], complex):
    print(temp[count])

从最新的更新中,似乎temp包含更多不同类型的元素,这些元素会导致问题,如果您只想打印某些类型的元素而忽略其余类型,那么您可以使用{{1仅传入元组中的那些类型作为第二个参数。示例(对于int和float) -

isinstance()

以上只是一个示例,说明如何检查特定元素是否属于多种类型之一,您可以对所需的所有类型执行类似操作。

答案 1 :(得分:0)

如果$result 保证temp[count](但可能为0 ),并且您希望得到假想部分等于0的复数,只需使用complex得到temp[count]的虚部并将其与0进行比较:

.imag

否则,如果您希望获得非复数(即,您甚至想要排除if temp[count].imag != 0: print(temp[count]) count += 1 (0+0j)),请使用(2+0j)

not isinstance(...)