Python无法解决的类型:NoneType()> INT()

时间:2016-06-10 03:07:50

标签: python

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)   
  

我在“while x> 0”中收到错误消息,“unorderable types:NoneType()>   int()“。我把它改为”而int(x)> 0“,但是其他错误信息,   “int()参数必须是字符串,类似字节的对象或数字,而不是   'NoneType'“。任何帮助,感谢你的时间。非常感谢你!

2 个答案:

答案 0 :(得分:4)

您的cal函数应该返回一些内容。

t = self.cal(t)

此处您使用cal的结果,但cal没有return语句,因此返回默认值None。通过返回正确的值来修复它。

答案 1 :(得分:3)

问题不言自明:传递给n的{​​{1}}的值变为cal(),无法进行比较。请确保在None方法的末尾返回适当的值,该cal()来自None。在cal()

的末尾添加类似的内容
return x # or `y`, depending on what you intend to do