闯关时部分题目个人解答:
1.找出10000以内的完美数,保存到列表L1中
#内循环用到的参数要在内循环里面定义,如果在外面循环定义参数,会导致出现一直累计的情况
L1=[]
for i in range(1,10001):
d=[] #要在循环内定义一个列表装i的真因子,如果把列表装在外面,那就会随着i的循环一直把把j放进去,而不是一个i对应自己的真因子
for j in range(1,int(i/2+1)):#i的最大约数不超过其中间值
if i%j==0:
d.append(j)
sum1=0#也是要在这里定义参数
for b in d:
sum1 += b
if i == sum1:
L1.append(i)
print(L1)
out:
[6, 28, 496, 8128]
2.寻找1000内的水仙花数,并保存到列表L2中;
#tips:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身
#例如:$1^3 + 5^3+ 3^3=153$
L2 =[]
# 开始写作业 加油
for i in range(100,1001):
a=str(i)#将i换成字符串,为了遍历取i上每位数字
b=[int(x)for x in a ]#遍历取数字,并转换成列表
t=0
for y in b:
t+=y**3
if i==t:
L2.