找1000以内的完美数输出结果为[]

问题遇到的现象和发生背景

题目:一个数如果恰好等于它的因子之和,
这个数就称为”完数”。例如6=1+2+3.
编程找出1000以内的所有完数

写的代码
yinzi = []
result = []
for i in range(2,1001):
    for a in range(1,i+1):
        if i%a == 0:
            yinzi.append(a)
    if sum(yinzi) == i:
        result.append(i)
    yinzi.clear()
print(result)  
遇到的问题:显示的result 是个空列表
我的解答思路和尝试过的方法

把 if i%a == 0:和 if sum(yinzi) == i:缩进同样距离时输出多个重复的值,虽然有6、28、496,但是多了一个24

正确的输出结果是6,28,496

不知道那块有问题


for a in range(1,i+1):
改为
for a in range(1,i):
def demo():
    result = []
    for i in range(1, 1000):
        sum = 0
        for j in range(1, i):
            if i % j == 0:
                sum += j
        if sum == i:
            result.append(str(i))
    return ",".join(result)

print("1000以内的完全数有:{}".format(demo()))