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