2016-06-10 2 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) 

Я получил сообщение об ошибке в "а х> 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. Исправьте его, вернув правильное значение.

Смежные вопросы