我正在尝试在python中创建一个接受用户输入的程序,并检查它是否是Kaprekar数字。 我还是一个初学者,并且遇到了很多问题,但我现在无法解决的主要问题是如何在列表中添加所有可能性,只有两个变量。我可能没有很好地解释它,所以这是一个例子:
我有一个包含数字的列表
['2', '0', '2', '5']
。
我如何让python做2 + 025
,20 + 25
和202 + 5
?
它将在if else语句中,并且只要它等于用户输入的数字,它就会停止。
(Here是整个代码看起来的样子,如果它有帮助 - 它当前说的是if 1 == 0:
,它应该添加它们。)
答案 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