用于数字到数字不变量的Python代码

用于数字到数字不变量的Python代码,python,exponent,digit,Python,Exponent,Digit,我已经编写了代码,确定哪些小于或等于1000000的自然数是完美的数字到数字不变量(它们可以写为它们的数字之和,每个数字的幂等于该数字;请参阅),并以这种形式表示它们 def f(n): y = str(n) l = len(y) list = [] for i in range(0,l): list.append(int(y[i])) list2 = [] for i in list: list2.append(i

我已经编写了代码,确定哪些小于或等于1000000的自然数是完美的数字到数字不变量(它们可以写为它们的数字之和,每个数字的幂等于该数字;请参阅),并以这种形式表示它们

def f(n):
    y = str(n)
    l = len(y)
    list = []
    for i in range(0,l):
        list.append(int(y[i]))
    list2 = []
    for i in list:
        list2.append(i**i)
    return sum(list2)

N = 10**6
n = np.linspace(1,N,N,dtype=int)
list = []
for i in n:
    if i == f(i):
        list.append(i)

list = np.array(list)

list2 = []
for i in list:
    list2.append(str(i))

for i in list2:
    for j in range(0,len(i)-1):
        print(i[j],'^',i[j],'+')
    print(i[-1],'^',i[-1],'=',int(i))
    print('----------')
运行此代码的输出为:

1 ^ 1 = 1
----------
3 ^ 3 +
4 ^ 4 +
3 ^ 3 +
5 ^ 5 = 3435
----------
代码给出了正确的答案,但我希望表达式3^3+4^4+3^3+5^5=3435显示在一行上。有什么方法可以做到这一点吗?

print()
语句默认情况下也会打印换行符。要抑制该行为并继续在同一行上打印,请添加
end='
参数,如下所示:

for i in list2:
    for j in range(0, len(i)-1):
        print(i[j],'^',i[j],'+', end='')
    print(i[-1],'^',i[-1],'=',int(i))
    print('----------')
或者,您可以通过
join()
ing字符串组合并按如下方式格式化输出来替换内部循环:

for i in list2:
    print(' + '.join(['{0:}^{0:}'.format(x) for x in i]) + ' = {}'.format(i))
    print('----------')
尝试打印中的
end=”“
选项

for j in range(0,len(i)-1):
    print(i[j],'^',i[j],'+', end=" ")
print(i[j],'^',i[j],'+',end='')