2017-06-06 3 views
3

私は1 000 000以下の自然数が完全な数字から数字への不変量であることを決定するコードを書いています(それぞれの数字の桁の和として書くことができます)数字と等しい累乗に; https://en.wikipedia.org/wiki/Perfect_digit-to-digit_invariant参照)、この形式で表現します。数字から数字への不変量のためのPythonコード

1^1 = 1 
---------- 
3^3 + 
4^4 + 
3^3 + 
5^5 = 3435 
---------- 

コードが正しい答えを与えるが、私は式3^3 + 4^4 + 3^3 + 5^5 =にしたい:

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('----------') 

このコードを実行することはできますが出力され3435を1行に表示します。これを行う方法はありますか?

+4

'プリント(I [j]は、 '^'、I [j]は、 '+'、エンド= '')印刷でend=" "オプションを試してみてください –

答えて

2

ステートメントデフォルトでは改行も印刷されます。また

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('----------') 

を、そしてより多くのpythonicallyあなたは、文字列componetsをすると、次のように出力をフォーマットjoin()ことにより、内側のループを置き換えることができます:その行動を抑制し、同じ行に印刷を継続するには、そのようend=''パラメータを追加します。

for i in list2: 
    print(' + '.join(['{0:}^{0:}'.format(x) for x in i]) + ' = {}'.format(i)) 
    print('----------') 
0

`

for j in range(0,len(i)-1): 
    print(i[j],'^',i[j],'+', end=" ") 
関連する問題