如何创建一个程序,为单个整数产生总和组合?

时间:2017-10-05 18:03:40

标签: python python-3.x sum

在python中,我想让我的程序提示我输入数字:'然后我会这样做。例如,我将输入' 5'作为回报,我希望它能找到1到5之间的每个数字组合,包括1和5,最多可加5而不重复任何序列或数字。所以这个输出应该是对1,4和2,3。最重要的是,我还想让它告诉我有多少输出,所以在这种情况下2.我想确保如果我输入一个更高的数字,比如10,它将产生每个组合,即使它是大于一对,所以它会产生1,2,3,4作为其中一个输出,1,9作为另一个,等等。

1 个答案:

答案 0 :(得分:0)

你去了,因为我喜欢和itertools一起玩,但是,是的,下次自己尝试一下:

import itertools

val = int(input())
r = range(val)[1:]
res = []    
for i in range(len(r)+1):
    res += [list(x) for x in itertools.combinations(r, i) if sum(list(x)) == val]    
print("Solution : %s " % res)
print("Combinations : %s" % len(res))

# For input 10 : 
# Solution : [[1, 9], [2, 8], [3, 7], [4, 6], [1, 2, 7], [1, 3, 6], [1, 4, 5], [2, 3, 5], [1, 2, 3, 4]]
# Combinations : 9

这种方法有点暴力,使用数学可能会快得多。