
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范围内的完美数列表? 展开
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范围内的完美数列表? 展开
1个回答
展开全部
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': 你少了单引号
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询