首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数总是返回false

函数总是返回false
EN

Stack Overflow用户
提问于 2020-04-02 23:28:39
回答 1查看 51关注 0票数 0

我正在做一个函数,我们输入一个数字,然后检查数字的平方和是否等于1。如果它等于1,我们打印true,如果不等于1,我们显示它继续无休止的循环,打印False。

我的代码:

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

发布于 2020-04-02 23:46:09

这就是当你的程序有n=10时会发生的事情:

代码语言:javascript
运行
复制
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中,你的函数属于一个类,当你调用函数时,你不需要传递它。

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60995208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档