Python 如何压缩多个for语句,以便用户可以更改它们的数量

Python 如何压缩多个for语句,以便用户可以更改它们的数量,python,Python,我有一个代码,可以得到每一个数字的组合(1到4),把它们加起来就会得到你插入的数字(在这个例子中是n) 它基本上是以n位数列出数字1、2、3和4的每个组合,并添加if语句,以排除我在另一个程序中需要的那些语句 我现在设置它的方式是,它被锁定为6位数字,因为我必须手动更改for语句的数量才能更改。我的问题是如何设置它,以便在控制台中输入尽可能多的for语句 这是我的密码: def num_of_comb(n): counter = 0 for a in range(1, 5):

我有一个代码,可以得到每一个数字的组合(1到4),把它们加起来就会得到你插入的数字(在这个例子中是n)

它基本上是以n位数列出数字1、2、3和4的每个组合,并添加if语句,以排除我在另一个程序中需要的那些语句

我现在设置它的方式是,它被锁定为6位数字,因为我必须手动更改for语句的数量才能更改。我的问题是如何设置它,以便在控制台中输入尽可能多的for语句

这是我的密码:

def num_of_comb(n):
    counter = 0
    for a in range(1, 5):
        if a == n:
            print(str(a))
            counter += 1
        for b in range(1, 5):
            if a+b == n:
                print(str(a) + str(b))
                counter += 1
            for c in range(1, 5):
                if a+b+c == n:
                    print(str(a) + str(b) + str(c))
                    counter += 1
                for d in range(1, 5):
                    if a+b+c+d == n:
                        print(str(a) + str(b) + str(c) + str(d))
                        counter += 1
                    for e in range(1, 5):
                        if a+b+c+d+e == n:
                            print(str(a) + str(b) + str(c) + str(d) + str(e))
                            counter += 1
                        for f in range(1, 5):
                            if a+b+c+d+e+f == n:
                                print(str(a) + str(b) + str(c) + str(d) + str(e) + str(f))
                                counter += 1

    return counter

print(num_of_comb(int(input("Unesi broj: "))))

只有输入6,此代码的结果才会正确,因为有6个for语句。

我将使用
itertools.product
替换嵌套的
for
循环

来自itertools导入产品的

numberOfLoops=int(输入(“循环数?”))
对于产品中的t(范围(1,5),重复=循环数):
#t是一个包含所有循环变量的元组
如果和(t)==n:
#做事
你可以看这些文件


请注意,对于您试图实现的特定目的,可能还有其他有趣的选项,如
itertools.combinations

使用
itertools.combinations()
。用于“压缩循环”的特定目的我会选择
itertools.product
xrange
这两种产品,它们正好that@CorentinPane成功了,谢谢你。。。我首先尝试了
itertools.combines()
,但得到的只是一个空字符串,product()有效,谢谢!