如何用python中的嵌套for循环解决这个问题?

时间:2021-07-21 10:08:20

标签: python for-loop nested-loops

我想要一个程序在终端中打印这个输出:

0000
0001
0002
...
0010
0011
...
9990
9991
...

因为我想找到所有 0 到 9 位的 4 位密码。

所以我开始用 python 编写这个程序:

num = ""
for a in range(0 , 10) :
num += str(a)
for b in range(0 , 10) :
    num += str(b)
    for c in range(0 , 10) :
        num += str(c)
        for d in range(0 , 10) :
            num += str(d))
            print(num)
            num = ""

但我收到了这个输出:

2
3
4
5
6
7
8
9
9000
1
2
...
30
...
100
...

所以我决定测试另一个程序:

num = []

for a in range(0 , 10) :
    num.append(str(a))
    for b in range(0 , 10) :
        num.append(str(b))
        for c in range(0 , 10) :
            num.append(str(c))
            for d in range(0 , 10) :
                num.append(str(d))
                print(num)
                num = []

但我还是没有成功:

['2']
['3']
['4']
['5']
['6']
['7']
['8']
['9']
['9', '0', '0', '0']
...
['4']
['5']
...
['7']
...
['9', '0']
...
['9']
['9', '0', '0']
...
['5', '0']
['1']
...
['6', '0']
...
['7', '0']
...
['8', '0']
...
['9', '0']
['1']
['2']
['3']
['4']
...
['9']

有人知道如何解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

那令人眼花缭乱的明显呢?

for i in range(10000):
    print('%04i' % (i))

也许还注意到,如果只传递一个参数,range 会隐式地从 0 开始运行;你不需要单独拼写出来。

答案 1 :(得分:2)

简单地运行会更直接:

for i in range(10000):
    print(f"{i:04}")

另见关于 Python 中零填充字符串的 this SO question

如果您真的想使用嵌套的 for 循环,我宁愿执行以下操作:

for a in range(0, 10):
    for b in range(0, 10):
        for c in range(0, 10):
            for d in range(0, 10):
                num = f"{a}{b}{c}{d}"
                print(num)

答案 2 :(得分:1)

还可以选择使用内置的 .zfill()

for i in range(10000):
    print(str(i).zfill(4))

答案 3 :(得分:0)

您也可以使用列表来做到这一点。

for i in range(10000):
    r = 4-len(list(str(i)))
    r = ['0']*r
    print(''.join(r)+str(i))

这里您只检查长度,并使用 join 作为最终字符串。