def classify(numb):
    i=1
    j=1
    sum=0
    for i in range(numb):
        for j in range(numb):
            if (i*j==numb):
                sum=sum+i
                sum=sum+j
            if sum>numb:
                print("The value",numb,"is an abundant number.")
            elif sum<numb:
                print("The value",numb,"is a deficient number.")
            else:
                print("The value",numb,"is a perfect number.")
            break
    return "perfect"

代码接受一个数字(numb),并将其分类为一个丰富的、不足的或完美的数字。我的输出很糟糕,只对某些数字有效。我认为是凹痕或断裂,我用错了。我们将非常感谢您的帮助。

最佳答案

我强烈建议你创建一个函数来创建给定N的适当除数,然后,这项工作将很容易。

def get_divs(n):
    return [i for i in range(1, n) if n % i == 0]


def classify(num):
    divs_sum = sum(get_divs(num))
    if divs_sum > num:
        print('{} is abundant number'.format(num))
    elif divs_sum < num:
        print('{} is deficient number'.format(num))
    elif divs_sum == num:
        print('{} is perfect number'.format(num))

10-04 19:03