我想要一个程序在终端中打印这个输出:
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']
有人知道如何解决这个问题吗?
答案 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 作为最终字符串。