2017-09-29 96 views
0

我要产生如以下在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

您'ljust()'它用零。 –

回答

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' 
+0

感谢所有人的回应。在这种情况下,如果我使用':04d',它将只返回4点二进制数字。但在我的情况下,我不知道数字的上限。我的意思是让我们说如果我会输入1342或4321,但是我的上限数字是123456,我无法得到我想要的结果。那我该怎么做?感谢您阅读 – human

+0

我刚更改了代码来解释这一点。 – tchatow

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方法。

0

为数字

x = 11 
print ("%04d"%x) 
# or 
print ("{0:04d}".format(x)) 

字符串

x = "11" 
print (x.zfill(4))