在 Python 3 中打印小于 10 的完全数

To print perfect numbers below 10 in Python 3

我无法弄清楚代码中有什么问题以及为什么 6 没有显示为完美数字。

以下是我打印 10 以下完全数的代码:

    s=0
    for j in range(10):
        for i in range(1,j):
            if j%i==0: 
                s=s+i      #for summing up the factors
        if j==s:
            print(j,'is a perfect number')
        else:
            print(j,'is not a perfect number')

输出是: 0是一个完美的数字 1不是一个完美的数字 2不是一个完美的数字 3不是一个完美的数字 4不是一个完美的数字 5不是一个完美的数字 6不是一个完美的数字 7不是一个完美的数字 8不是一个完美的数字 9 不是一个完美的数字

您需要在最外层的for循环中将sum重置为0:

for j in range(10):
    s=0
    for i in range(1,j):
        if j%i==0: 
            s=s+i      #for summing up the factors
    if j==s:
        print(j,'is a perfect number')
    else:
        print(j,'is not a perfect number')

这将打印输出:

0是完美数
1不是完美数
2 不是一个完美的数字
3 不是一个完美的数字
4 不是一个完美的数字
5 不是一个完美的数字
6是一个完美的数字
7 不是一个完美的数字
8 不是一个完美的数字
9不是完美数

问题是您没有为每个整数重置 s。

for j in range(10):
    s=0
    for i in range(1,j):
        if j%i==0: 
            s=s+i      #for summing up the factors
    if j==s:
        print(j,'is a perfect number')
    else:
        print(j,'is not a perfect number')

(0, 'is a perfect number')
(1, 'is not a perfect number')
(2, 'is not a perfect number')
(3, 'is not a perfect number')
(4, 'is not a perfect number')
(5, 'is not a perfect number')
(6, 'is a perfect number')
(7, 'is not a perfect number')
(8, 'is not a perfect number')
(9, 'is not a perfect number')