2016-10-02 79 views
2

我想在python中創建一個程序,它將接受用戶的輸入並檢查它是否是Kaprekar數字。 我還是個初學者,一直有很多問題,但我現在似乎無法解決的主要問題是如何在列表中添加所有可能性,只有兩個變量。我可能沒有解釋得很好,所以這裏是一個例子:在列表中添加所有可能性,有兩個變量

我有一個包含數字的列表 ['2', '0', '2', '5']。 我該如何讓python做2 + 02520 + 25202 + 5

它會在if else語句中,一旦它等於用戶輸入的數字,它就會停止。

Here是整個代碼是什麼樣子,如果它helps-目前它說if 1 == 0:,應該加入他們。)

回答

2

假設您從

a = ['2', '0', '2', '5'] 

然後你可以運行

>>> [(a[: i], a[i: ]) for i in range(1, len(a))] 
[(['2'], ['0', '2', '5']), (['2', '0'], ['2', '5']), (['2', '0', '2'], ['5'])] 

獲得所有可能的連續分割。

如果您想進一步處理它,你可以將它通過

>>> [(int(''.join(a[: i])), int(''.join(a[i: ]))) for i in range(1, len(a))] 
[(2, 25), (20, 25), (202, 5)] 

更改爲數字或把它們加起來

>>> [int(''.join(a[: i])) + int(''.join(a[i: ])) for i in range(1, len(a))] 
[27, 45, 207] 
+0

非常感謝,做到了! – julianaakkh

+0

非常歡迎。祝一切順利。 –

0

不是直接回答你的問題,但你可以寫一個表達式來確定一個數N是否更簡潔一個Krapekar數。

>>> N=45 
>>> digits=str(N**2) 
>>> Krapekar=any([N==int(digits[:_])+int(digits[_:]) for _ in range(1,len(digits))]) 
>>> Krapekar 
True 
相關問題