2016-10-02 81 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 
相关问题