Python完美数代码问题

如果整数n满足如下条件,则称n为完美数:1)n是正数;2)n不是10的倍数;3)n不包含先导的0;4)k为n去掉0之后所得的数,k不等于n,而且k是n的一个因子。前几个完... 如果整数n满足如下条件,则称n为完美数:
1)n是正数;
2)n不是10的倍数;
3)n不包含先导的0;
4)k为n去掉0之后所得的数,k不等于n,而且k是n的一个因子。
前几个完美数为:105,108,405,1001,1005,1008,2002,2025。
def computePerfectNumber(num):
alist=[]
for x in range(num):
data=''
if (x>0) and (x%10!=0):
for ch in list(str(x)):
if ch!=0:
data+=ch
if (x%int(data)==0)and (x!=int(data)):
alist.append(x)
return alist
请问这个函数为什么无法输出num范围内的完美数列表?
展开
 我来答
良玉小帝
2017-11-17 · 个人日常精心汇总合集
良玉小帝
采纳数:5925 获赞数:9450

向TA提问 私信TA
展开全部
root@localhost:~/xly/02# python r.py 
[105, 108, 405, 1001, 1005, 1008, 2002, 2025, 3003, 4004, 4005, 5005, 6006, 6075, 7007, 8008, 9009]
root@localhost:~/xly/02# cat r.py 
def computePerfectNumber(n):
        k=''
        if (n%10!=0):
                for ch in list(str(n)):
                        if ch!='0':
                                k+=ch
                if (n%int(k)==0) and (n!=int(k)):
                        return True
        return False


alist=[]
for i in range(1,10000):
        if computePerfectNumber(i):
                alist.append(i)
print alist

主要是因为if ch!='0':  你少了单引号

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式