2017-09-29 154 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))