我正在尝试编写一个程序,将二进制的4位字符串表示形式转换为十进制(基数为10)的整数。
这是我到目前为止所得到的,但是在输入4位二进制文件(例如1101)后,它就出现了:'>>>'.
以下是我关注的流程图:
这是我的代码:
def binaryToDenary():
Answer = 0
Column = 8
Bit = int(input("Enter bit value: "))
if Column >1:
Answer = Answer + (Column * Bit)
Column = Column/2
elif Column <1:
print("The decimal value is: " + Answer)
binaryToDenary()
我做错了什么?任何提示?
答案 0 :(得分:1)
看起来你没有实现循环:
def binaryToDenary():
Answer = 0
Column = 8
while not Column < 1:
Bit = int(input("Enter bit value: "))
Answer = Answer + (Column * Bit)
Column = Column/2
print("The decimal value is: {}".format(Answer))
答案 1 :(得分:0)
您可以使用内置方法,也可以像下面这样制作自己的功能:
bintodec = lambda arg: sum(int(j) * 2**(len(arg) - i - 1) for i, j in enumerate(arg))
答案 2 :(得分:0)
试试这个。这是图中的直接翻译。请注意,在生产代码和真实库中,这不是一个特别有用的功能,只能用作检查练习。
def integer_from_binary_input():
answer = 0
column = 8
while True:
bit_chars = raw_input("Enter bit value:")
assert len(bit_chars) == 1
assert bit_chars in "01"
bit = int(bit_chars)
answer = answer + column * bit
column /= 2
if column < 1:
break
print "Decimal value is: %d" % answer
return answer
output = integer_from_binary_input()