我试图测试一个数字是否是自恋的。我尝试这个代码,但它不起作用

时间:2017-11-08 04:01:20

标签: python-3.x

自恋数字是一个数字,它是每个数字的总和,增加到数字长度的幂。例如:

1634 == 1 ^ 4 + 6 ^ 4 + 3 ^ 4 + 4 ^ 4

这是我的代码,用于测试数字是否自恋:

def is_narcisse(n):

    for k in range(n):
        acc = 0
        n = str(k)
        for lettre in n:
            puissance = len(n)
            chiffre = int(lettre)
            acc += pow(chiffre, puissance)
            if (acc == k):
                return acc
            else :
                return not acc

assert is_narcisse(0)
assert is_narcisse(1)
assert is_narcisse(2)
assert is_narcisse(10)
assert not is_narcisse(42)
assert is_narcisse(153)
assert is_narcisse(1634)
assert not is_narcisse(4242)
assert is_narcisse(9474)

1 个答案:

答案 0 :(得分:0)

如果您正在测试n的单个值,则不需要外循环。

试试这个:

def is_narcisse(n):
    acc = 0
    k = str(n)
    puissance = len(k)
    for lettre in k:
        chiffre = int(lettre)
        acc += pow(chiffre, puissance)
    if (acc == n):
        return True
    else :
        return False

assert is_narcisse(1634)

我已经删除了外循环,并在循环执行后测试累加器。

我将n的字符串值分配给k并将长度calc移出循环,因为它不会发生变化。