2012-11-23 85 views
1

可能重複:
Convert an integer to binary without using the built-in bin function整數二進制

該函數接收作爲參數的數在基座10和應返回代表以二進制表示爲列表中的相同的值的列表的位,列表中的第一個元素是最重要的(最左邊的)位。

convert_10_to_2(11)應該返回[1, 0, 1, 1]

我不能用二元函數或函數外,因此具有更復雜的方式來完成。

b = '' 
while num > 0: 
    b = str(num % 2) + b 
    num >>= 1 
return (b) 

好我得到了我的代碼終於到了,還好我得到'1011',但我需要[1,0,1,1],我真的不能使用任何功能,如bin(x)binary_list。這就是這個問題這麼久了。

+1

如果你有工作作爲一個字符串,你可以字符串分割得到一個數組。 – xbonez

+1

本網站要求您僅發佈有問題的錯誤代碼。所以,只需發佈​​它。 –

+2

這是如何從你的[最後一個問題]不同(http://stackoverflow.com/questions/13522773/convert-an-integer-to-binary-without-using-the-built-in-bin-function)上學科? – DSM

回答

1

您可以初始化一個列表,然後使用for循環遍歷字符串並在每次迭代中將該值附加到列表中,就像這樣。

binary_string = convert_10_to_2(11) 

binary_list = [] 

for character in binary_string: 
    binary_list.append(int(character)) 
+0

對不起,我不能使用binary_list,雖然我被允許使用附加 – user1790201

+1

我不完全確定你的意思。 'binary_list'只是一個聲明一個列表的變量,而不是一個函數。 'binary_list'可以重命名爲任何東西,它可以正常工作。換句話說,它只是一個普通的列表,並且與二進制數字完全沒有關聯,因此它不會被視爲比賽或類似的「作弊」。 – Jeremy

0

這會爲Python 2.x和3.x兩個工作:

list(map(int, '{:b}'.format(11))) 

用其他號碼代替11,如果你願意的話。如果不需要對Python 3.x的支持,請去除附加的list調用。如果你真的覺得有必要的話,可以把它放在函數中。

+0

我無法使用格式,如果您有任何其他建議,請提供給他們 – user1790201

+0

爲什麼和不能使用什麼?你可以用什麼? – Tadeck