簡體   English   中英

用於數字到數字不變量的Python代碼

[英]Python code for digit-to-digit invariants

我編寫的代碼確定小於或等於1 000 000的自然數是完美的數字到數字不變量(它們可以寫成數字的總和,每個數字都增加到等於數字的冪;請參閱https:/ /en.wikipedia.org/wiki/Perfect_digit-to-digit_invariant )並以此形式表達它們。

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()替換內部循環字符串組件並格式化輸出,如下所示:

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

在print中嘗試end=" "選項

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM