2017-04-25 80 views
0

我正在寫一個多項式類,並有我的運營商的GetItem麻煩 這是我爲我的GetItem代碼:爲什麼我的方法操作返回沒有

def __getitem__(self, idx): 
     for i in range(len(self.coeffs)): 
      if self.coeffs[i][1] == idx: 
       return (self.coeffs[i][0]) 
       break 

這裏是我的測試代碼:

for i in range(P1.degree() + 1): 
      if P1[i] != 0: 
       print(P1[i], end = " ") 

多項式爲6×14^+ 9X^11-12x^3 + 42並將其返回所有的非零係數但是我得到這樣

42 None None -12 None None None None None None None 9 None None 6 
輸出

所以我的問題是我怎麼才能只顯示coeffients,也爲什麼沒有出現反正呢?

+3

如果你的'if'語句永遠不匹配,當函數結束時'None'將被返回。 – BrenBarn

+3

1)當函數結束時,所有的python函數隱式返回'None'。 2)您可以無條件地打印**所有**值。爲什麼不應該打印'無',如果那是'P1 [i]'的值? –

+1

['return'](https://docs.python.org/3.6/reference/simple_stmts.html#return)後面的'break'是不必要的,因爲'return'已經離開了當前函數。 –

回答

0

你可以嘗試把 返回0 在函數結束的GetItem,以防止它沒有返回,而是返回值爲0

這將使支票「如果P1 [I]!= 0:「在測試代碼中,如果值現在爲None,則值爲false,然後'None'值不會被打印。

相關問題