我寫這段代碼是為了把二進制轉換成十進制,這不是最好的代碼,因為我是初學者。代碼如下:def bin_dec(a):
binary_list = list(str(a))
binary_list.reverse()
g = 1
double_list = [1]
for i in binary_list:
g = g * 2
double_list.append(g)
double_list.pop()
l = 0
ans = []
while l < len(binary_list):
g = binary_list[l]
if g == "1":
k = double_list[l]
ans.append(k)
l = l + 1
return "Decimal Value : %r" % sum(ans)
如果列印bin_dec(01101)output=“0”,則得到“0”,但如果執行此列印bin_dec(1101),則輸出為“13”
代碼運作得很好,但問題是當二進制數以0開頭時,如“00110”或“01010”,Python會立即将其更改為八進制數,進而導緻代碼無法輸出“0”。我曾嘗試用oct()函數更改變量“a”,但它也會更改不以0開頭的二進制數。他們唯一可行的方法是使用raw_input類似
a = raw_input("type Binary Number : ")但我不想那樣做。我希望有人能幫我。我也不想使用任何python函數将二進制數轉換為十進制數。謝謝。在