2016-06-10 111 views
-1
class Solution(): 
    def isHappy(self,n): 
     t = n 
     z = n  
     while t>0: 
      t = self.cal(t) 
      if t == 1: 
       return True 
      z = self.cal(self.cal(z)) 
      if z == 1: 
       return True 
      if t == z: 
       return False 

    def cal(self,n): 
     x = n 
     y = 0 
     while x > 0: # unorderable types: NoneType() > int() 
      y = y+(x%10)*(x%10) 
      x = x/10 



test = Solution() 
result = test.isHappy(47) 
print(result) 

我在得到錯誤消息 「而X> 0」, 「unorderable類型:NoneType()> INT()」。我將其更改爲「while int(x)> 0」,但其他錯誤消息 「int()參數必須是字符串,類似字節的對象或數字,而不是 'NoneType'」。任何幫助,感謝您的時間。非常感謝!的Python unorderable類型:NoneType()> int()函數

回答

2

的問題是不言自明的:的n傳遞給cal()值變爲None,這是不能進行比較。確保在cal()方法結束時返回適當的值,這就是None的來源。加入這樣的事情在cal()年底:

return x # or `y`, depending on what you intend to do 
3

cal函數返回的東西。

t = self.cal(t) 

這裏使用的cal的結果,但cal沒有return聲明,從而返回的None默認。通過返回正確的值來修復它。

相關問題