将所有可能性加到一个列表中,有两个变量
Add up all possibilities in a list, with two variables
我正在尝试在 python 中制作一个程序,它将接受用户的输入并检查它是否是 Kaprekar 号码。
我还是个初学者,遇到了很多问题,但现在我似乎无法解决的主要问题是如何将列表中的所有可能性加起来,只有两个变量。我可能没有很好地解释它,所以这是一个例子:
我有一个包含数字的列表
['2', '0', '2', '5']
。
我如何让 python 执行 2 + 025
、20 + 25
和 202 + 5
?
它会在 if else 语句中,一旦它等于用户输入的数字,它就会停止。
(Here 是整个代码的样子,如果它有帮助的话——它目前说 if 1 == 0:
,应该把它们加起来。)
假设你从
开始
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]
不能直接回答你的问题,但你可以写一个表达式来更简洁地判断一个数 N 是否是 Krapekar 数。
>>> N=45
>>> digits=str(N**2)
>>> Krapekar=any([N==int(digits[:_])+int(digits[_:]) for _ in range(1,len(digits))])
>>> Krapekar
True
我正在尝试在 python 中制作一个程序,它将接受用户的输入并检查它是否是 Kaprekar 号码。 我还是个初学者,遇到了很多问题,但现在我似乎无法解决的主要问题是如何将列表中的所有可能性加起来,只有两个变量。我可能没有很好地解释它,所以这是一个例子:
我有一个包含数字的列表
['2', '0', '2', '5']
。
我如何让 python 执行 2 + 025
、20 + 25
和 202 + 5
?
它会在 if else 语句中,一旦它等于用户输入的数字,它就会停止。
(Here 是整个代码的样子,如果它有帮助的话——它目前说 if 1 == 0:
,应该把它们加起来。)
假设你从
开始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]
不能直接回答你的问题,但你可以写一个表达式来更简洁地判断一个数 N 是否是 Krapekar 数。
>>> N=45
>>> digits=str(N**2)
>>> Krapekar=any([N==int(digits[:_])+int(digits[_:]) for _ in range(1,len(digits))])
>>> Krapekar
True