我想在python中生成二进制数字列表,如下所示:
'0':'0000', '1':'0001', '2':'0010', '3':'0011', '4':'0100', '5':'0101',
'6':'0110', '7':'0111', '8':'1000', '9':'1001' .....
我写了一些小代码来完成这项工作,但是当我运行时,我得到了这样的结果:
'0':'0', '1':'1', '2':'10', '3':'11', '4':'100', '5':'101',
'6':'110', '7':'111', '8':'1000', '9':'1001' .....
我该怎么做bin()并没有在开始时切掉所有的零。谢谢你的阅读。我的代码:
my_number = int(input("Please enter number"))
for i in range(0,2**my_number):
print(bin(i)[2:])
答案 0 :(得分:3)
使用字符串格式:
>>> n = 10
>>> for i in range(10):
... print(f"{i:04b}")
...
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
注意,我使用的是Python 3.6 f字符串,但您始终可以使用.format
方法。
答案 1 :(得分:0)
x = 11
print ("%04d"%x)
# or
print ("{0:04d}".format(x))
表示字符串
x = "11"
print (x.zfill(4))
答案 2 :(得分:0)
Python 2:
import math
n = int(input("Please enter a number "))
x = int(math.ceil(math.log(n,2)))
print ", ".join(['\'{0}\':\'{0:0{1}b}\''.format(i,x) for i in range(n)])
Python 3:
import math
n = int(input("Please enter a number "))
print(", ".join([f'\'{i}\':\'{i:0{math.ceil(math.log(n,2))}b}\'' for i in range(n)]))
提供所需的输出:
'0':'0000', '1':'0001', '2':'0010', '3':'0011', '4':'0100', '5':'0101', '6':'0110', '7':'0111', '8':'1000', '9':'1001'