我正在做一个函数,我们输入一个数字,然后检查数字的平方和是否等于1。如果它等于1,我们打印true,如果不等于1,我们显示它继续无休止的循环,打印False。
我的代码:
class Solution:
def isHappy(self, n: int,l=[]) -> bool:
sum = 0
print(l)
while(n>0):
sum = sum + int(n%10)**2
n = n//10
if(sum==1):
print('ok')
return True
else:
if(l.count(sum)>0):
return False
else:
l.append(sum)
Solution.isHappy(self,sum,l)
#Cross verify
Saa = Solution()
st=Saa.isHappy(7)
st问题是它总是返回False,我添加了额外的print('ok')行来检查,它实际上在正确的迭代中打印了它,但仍然返回false。
打印时的st值= false
当我为7执行程序时,它打印出来
82、68、100
82、68、100、49
82、68、100、49、97
82、68、100、49、97、130
82、68、100、49、97、130、10
好的
在10之后,它应该返回True,但仍然返回False
发布于 2020-04-02 23:46:09
这就是当你的程序有n=10时会发生的事情:
1> sum=0
2>While (10>0): # its true
3>sum=sum+int(10%10)**2 #10%10=0 so sum is still 0
4>n=10//10 #10//10 is 1 so now n=1
5>l.count(sum) =0 and so on..
6>prints ok but passes False since you called self unnecessarily in the function 您必须将Solution.isHappy(self,sum,l)更改为Solution.isHappy(sum,l)。
因为yes @SembeiNorimaki是正确的,self只是在declaration.If中,你的函数属于一个类,当你调用函数时,你不需要传递它。
希望这能有所帮助
https://stackoverflow.com/questions/60995208
复制相似问题