python 输出1000以内的完数,输出格式为“*=*+*+…+*”

如果一个自然数等于它的因子(包括1,不包括它本身)之和,则该数称之为“完数”。如6=1+2+3,则6是完数。编写程序,输出1000以内的完数,输出格式为“*=++…+*”。现想请教各位,如何输出符合题目要求的格式呢?

for i in range(1, 1000):
    sum = 0
    l = []
    for j in range(1, i):
        if i%j == 0:
            sum += j;
            l.append(j)
    if sum == i:
        print("{left}={right}".format(left=i, right="+".join([str(x) for x in l])))

img


for i in range(1, 1000):
    sum = 0
    l = []
    for j in range(1, i):
        if i%j == 0:
            sum += j;
            l.append(j)
    if sum == i:
        print(i,str(l).replace('[', '= ').replace(']', '').replace(',', ' +'))

img

给个例子:

for x in range (1,1001):
    sum = 0
    lst = []
    for y in range(1,int(x/2)+1):
        if x/y == int(x/y):
            sum = sum + y
            lst.append(y)
    if sum == x:
        print(x,end='=')
        for i in range(len(lst)):
            if i<len(lst)-1:
                print(lst[i],end='+')
            else:
                print(lst[i])

img

Demo:

_list = [1, 2, 3]
number = 6
# 6=1+2+3
_str = "{left}={right}".format(left=number, right="+".join([str(x) for x in _list]))
print(_str)

Output

6=1+2+3