自恋数字是一个数字,它是每个数字的总和,增加到数字长度的幂。例如:
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)
答案 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移出循环,因为它不会发生变化。