二进制字符串到十进制整数转换器

Binary string to Decimal integer converter

我正在尝试编写一个程序,将二进制的 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()

我做错了什么?有什么提示吗?

您似乎还没有实现循环:

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))

您可以使用内置方法,也可以像这样创建自己的函数:

bintodec = lambda arg: sum(int(j) * 2**(len(arg) - i - 1) for i, j in enumerate(arg))

试试这个。这是图表的直接翻译。请注意,在生产代码和真实库中,这不是一个特别有用的函数,仅用作考试练习。

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()