python中的二进制函数切零

时间:2017-09-29 06:42:01

标签: python

我想在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:])

3 个答案:

答案 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'