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'“。任何帮助,感谢你的时间。非常感谢你!
答案 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