问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
参考代码
# 方法一:
for i in range(0,32):
print("{0:0>5b}".format(i))
# 方法二:
for a in range(0, 2):
for b in range(0, 2):
for c in range(0, 2):
for d in range(0, 2):
for e in range(0, 2):
print(str(a) + str(b) + str(c) + str(d) + str(e))
考察知识点
1.长度为5的01字串,最大值为11111,转换成10进制就是31,方法一的思路就是先在0~32这个范围内一次检索,再把检索到的数转成二进制数输出
2.format()函数通过 {} 和 : 来代替以前的 %
冒号之前的数字实际上是序号,当format内只有一位元素需要输出时,这个序号可以省略(冒号不能省略)
format使用>、、<来表示左对齐、居中对齐、右对齐。在对齐符号(>、、<)后面加上的数字,表示宽度,在对齐符号之前加上特定字符表示当输出的内容不足以占满宽度时,以特定字符填充。
本题就是使用0占位,右对齐,宽度为5
关于formate函数的详细用法可参考下面这篇文章
Python格式化输出之format函数
2.方法二是通过5层循环+字符拼接实现输出