在列表中添加所有可能性,包含两个变量

时间:2016-10-02 09:17:41

标签: python list add

我正在尝试在python中创建一个接受用户输入的程序,并检查它是否是Kaprekar数字。 我还是一个初学者,并且遇到了很多问题,但我现在无法解决的主要问题是如何在列表中添加所有可能性,只有两个变量。我可能没有很好地解释它,所以这是一个例子:

我有一个包含数字的列表 ['2', '0', '2', '5']。 我如何让python做2 + 02520 + 25202 + 5

它将在if else语句中,并且只要它等于用户输入的数字,它就会停止。

Here是整个代码看起来的样子,如果它有帮助 - 它当前说的是if 1 == 0:,它应该添加它们。)

2 个答案:

答案 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]

答案 1 :(得分:0)

不是您问题的直接答案,但您可以编写表达式来确定数字N是否更简洁地为Krapekar数字。

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