如何在Python中不使用bin函数将二进制转为十进制
我做了一个十进制转二进制的转换器,但我需要一个二进制转十进制的转换器,而且不想用bin这个函数。这个需求看起来很简单,能有人帮帮我吗?
choice=input('Please enter b for a binary to decimal conversion or d for a decimal to binary conversion:\n')
if choice == 'd':
decimalNum=int(input('Please enter a decimal number:\n'))
bit8=0
bit7=0
bit6=0
bit5=0
bit4=0
bit3=0
bit2=0
bit1=0
bit8=decimalNum%2
decimalNum=decimalNum//2
bit7=decimalNum%2
decimalNum=decimalNum//2
bit6=decimalNum%2
decimalNum=decimalNum//2
bit5=decimalNum%2
decimalNum=decimalNum//2
bit4=decimalNum%2
decimalNum=decimalNum//2
bit3=decimalNum%2
decimalNum=decimalNum//2
bit2=decimalNum%2
decimalNum=decimalNum//2
bit1=decimalNum%2
decimalNum=decimalNum//2
print(str(bit1)+str(bit2)+str(bit3)+str(bit4)+str(bit5)+str(bit6)+str(bit7)+str(bit7))
3 个回答
0
试试这个:
from __future__ import print_function
def binary(n):
i = 0
sum = 0
while n > 0 :
num = n % 10
n= n//10
sum = sum + (2**i) * num
i+=1
print(sum)
# Take decimal number from user
dec = int(input("Enter decimal: "))
binary(dec)
1
这样做不是简单多了吗?
conv = str(input('what do you want to convert?'))
if conv == 'binary':
x = str(input('enter binary : '))
ansBin = int(x, 2)
print('decimal for binary ', x, ' is ', ansBin)
elif conv == 'decimal':
y = int(input('enter decimal : '))
ansDec = bin(y)[2:]
print('binary for decimal ', y, ' is ', ansDec)
3
要把二进制转换成十进制,只需要这样做:
int(binary_string, 2) # The 2 is the base argument from which we convert.
示例:
>>> int('0b10110', 2)
22
注意:你用来把十进制转换成二进制的代码有很多问题。如果你坚持不想使用内置函数来实现这个功能,你可能会对这篇帖子感兴趣:
不过如果是我想避免使用bin()
函数,我会这样做:
"{0:#b}".format(an_integer)
示例:
>>> "{0:#b}".format(22)
'0b10110'
这比你现在的代码更符合Python的风格。