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