从一系列整数中查找一个完美整数列表



用户将输入一个任意范围,其中结束数字是用户想要的数字,从这些数字中得到完美的数字,并将数字附加到列表中,然后打印列表或列表元素。。。样本代码:sum_1=0sum_2=0b=[]

a=range(1,int(input('enter_num_upto you want perfect num')))
for i in a:
for items in range(1,i):
if(i%items)==0:
sum_1=sum_1+items
sum_2=sum_2+items+i

if sum_1==i and (sum_2//2)==i:
b.append(i)

for j in b:
print(j)

代码运行时没有错误,但没有显示任何输出。。。。。请记下我的错误并解释正确的逻辑提前感谢

我认为问题在于您没有定义列表"b";。我建议在你定义之后

a=range(1,int(input('enter_num_upto you want perfect num')))

将b定义为

b=[]

这将告诉程序;b";存在,然后可以将项附加到该列表。不能将项附加在尚不存在的列表中。

对于两个变量sum_1和sum_2也应该是一样的,你不能在"sum_1"中有条件地定义它们;如果语句";,因此,您应该在程序开始时定义它们,就在您定义b 之后

sum_1 = 0
sum_2 = 0

至于你的代码的逻辑,我建议你不需要sum_2,在经历了生成sum_1的for循环后,检查sum_1是否等于I;"范围";,将结束设置为结束后的数字。例如,如果希望范围从1开始,到I结束,请使用范围(1,I+1(。这只是你的意见。确保在每次迭代后也将sum_1设置回0。

所以:

a=range(1,int(input('enter_num_upto you want perfect num'))+1)
b=[]
sum_1=0
for i in a:
for item in range(1,i):
if (i%item)==0:
sum_1= sum_1+item

if sum_1==i:
b.append(i)

sum_1=0

for j in b:
print(j)

最新更新