簡體   English   中英

復雜錯誤的無效比較

[英]Invalid Comparison of Complex Error

我有下面的代碼,其中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])打印一個復數,因此我得到和以前一樣的錯誤。 另外,我執行了print('type',type(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

文檔中所給-

當任何操作數為復數時, <<=>>=運算符將引發TypeError異常。

同樣,將復數與任何東西(除等於)進行比較也沒有意義。

如果您只想打印數字(如果它不復雜)(如您在注釋中給出的那樣),則-

如果temp [count]不復雜,我想打印(temp [count])。

你可以做 -

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

從有問題的最新更新來看,似乎temp包含更多不同類型的元素,這會引起問題,如果您只想打印某些類型的元素而忽略其余元素,則可以使用isinstance()僅將那些類型的元素傳遞給元組作為第二個參數。 示例(用於int和float)-

if isinstance(temp[count], (int, float)):
    print(temp[count])

上面僅是一個示例,顯示了如何檢查特定元素是否為多種類型之一,您可以對所需的所有類型進行類似的操作。

如果temp[count]保證complex (但虛可能為0),並且您正在尋找虛部等於0的復數,則只需獲取temp[count]的虛部。使用.imag並將其與0進行比較:

if temp[count].imag != 0:
    print(temp[count])
    count += 1

否則,如果要獲取非復數(即,甚至要排除(0+0j)(2+0j) ),請not isinstance(...)使用not isinstance(...)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM