我有以下代码,其中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
答案 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 complex
得到temp[count]
的虚部并将其与0进行比较:
.imag
否则,如果您希望获得非复数(即,您甚至想要排除if temp[count].imag != 0:
print(temp[count])
count += 1
和(0+0j)
),请使用(2+0j)
:
not isinstance(...)