如何实例化for循环x次

时间:2019-01-06 02:18:40

标签: python

我有这段代码,可以生成3位数字的所有组合

for n1 in range(10):
    for n2 in range(10):
        for n3 in range(10):
            print(n1,n2,n3)

input()

因此这将生成001,002,003 ...一直到999,并且工作正常,我的问题是如何扩展此代码以使用可以输入的自定义数字位数运行?例如,如果我说5,则应该运行5 for循环并打印所有结果,以获得00001,00002 ...99999。那么,如何动态创建更多的for循环而不自己编写?

5 个答案:

答案 0 :(得分:4)

您可以使用递归

[...document.getElementById('options').children].forEach(item => {
  item.setAttribute('type', 'checkbox')

})

答案 1 :(得分:3)

使用product模块的itertools

from itertools import product
for i in product(range(10),repeat=5):
    print(*i,sep='')

快得多:

from itertools import product
l = list(product(range(10),repeat=5))
print('\n'.join([''.join(map(str,i)) for i in l]))

答案 2 :(得分:2)

您可以使用format使代码独立于要打印的最大数量。与for的{​​{1}}模块相比,在range上使用直接product循环似乎非常有效,因为对于每种组合,它都会计算乘积。

collections

输出

max_num = 1000
width=len(str(max_num))

for n1 in range(1, max_num):
    print ('{n1:0{width}}'.format(n1=n1, width=width))

答案 3 :(得分:0)

您无需创建多个循环,只能通过单个循环来完成。

digits = int(input("Enter the number of digits you want: "))

for i in range(1, 10 ** digits):
    print('{num:0{width}}'.format(num=i, width=digits))

这样您就可以生成尽可能多的数字所需的数字。 受限于整数类型的大小

答案 4 :(得分:0)

总的来说,我喜欢@Bazingaa的方法,但是我更喜欢powerzfill的组合:

def func(digits):
    for n in range(1, 10 ** digits):
        print(str(n).zfill(digits))

func(3)

# 001
# 002
# 003
# ...
# 997
# 998
# 999