2010-07-15 176 views
11

說我讓我變成二進制數字1和127之間的隨機數,並從它與休耕代碼中刪除0b轉換一個數字,二進制固定長度

key_one= int(raw_input("Enter key (0 <= key <= 127): ")) 

if key_one in range(128): 
    bin_key_one=bin(key_one)[2:] 
print bin_key_one 
else: 
    print "You have to enter key (0 <= key <= 127)" 

現在我想通過根據需要用零填充開頭來使其長度爲7個字符。我想我需要使用for循環,但有人可以告訴我如何去做?

+1

'if key_one在範圍(128)中''可以簡單地用'if 0 <= key_one <= 127'代替(這是更通用的,因爲它容易容納比127大得多的數字)。 – EOL 2010-07-15 07:28:26

回答

40

不,你不知道。

>>> '{0:07b}'.format(12) 
'0001100' 
+0

+1:這樣可以避免轉換爲二進制文件,這在未來可能會發生變化。 – EOL 2010-07-15 07:32:00

+0

我有點驚呆了 - 我一直在使用Python幾年,從未見過str.format()。我一直使用Python中的C風格格式化打印,碰巧它不支持二進制。 – 2010-07-15 07:35:41

+0

@Russell:這是2.6的新功能。 – 2010-07-15 07:36:11

-1

試試這個:

for i in range(1, 127): 
'0'*(7-len(bin(i)[2:]))+bin(i)[2:] 
+2

內置'zfill()'確實是這樣的... – EOL 2010-07-15 07:30:41

19

所以它發生Python有一個字符串的方法.zfill()

>>> '1'.zfill(7) 
'0000001' 
>>> '10010'.zfill(7) 
'0010010' 
+0

這是非常好的! – user3697665 2017-05-26 20:23:01

0

使用Python 3.6的最新f-strings,你現在可以這樣做:

key_one = int(input("Enter key (0 <= key <= 127): ")) 

if key_one in range(128): 
    bin_key_one = f'{key_one:07b}' 
    print(bin_key_one) 
else: 
    print("You have to enter key (0 <= key <= 127)") 
相關問題