Executando verificação de segurança...
2

Atenção, não é uma crítica, apenas um complemento.

Entendo que o objetivo - presumo - é ser didático e mostrar os detalhes do algoritmo e como implementá-lo. De fato, acho importante saber como as coisas funcionam e implementar algo do zero sempre ajuda a aprender.

Mas só pra constar, se for para um uso mais prático: como o código apresentado está em Python, vale lembrar que a linguagem já tem isso pronto. Basta usar int:

print(int('10110101100', 2)) # 1452

O segundo argumento indica que quero usar a base 2 para fazer a conversão.


Por fim, como sugestão, segue outra maneira de implementar o mesmo algoritmo:

def binary_to_decimal(binary: str):
    value = 0  
    for i, c in enumerate(reversed(binary)):
        if c == "1":
            value += pow(2, i)         
    return value

No caso, enumerate itera pelos caracteres da string ao mesmo tempo em que já me fornece os índices. E reversed percorre ela de trás pra frente.

O mesmo algoritmo pode também ser feito com uma generator expression:

def binary_to_decimal(binary: str):      
    return sum(pow(2, i) for i, c in enumerate(reversed(binary)) if c == "1")

Ou, sem usar reversed e fazendo um ajuste no expoente:

def binary_to_decimal(binary: str):      
    return sum(pow(2, len(binary) - 1 - i) for i, c in enumerate(binary) if c == "1")
Carregando publicação patrocinada...
1

É uma situação parecida com ordenar uma lista. Eu posso usar o sort() da linguaguem, mas saber como fazer um bubble sort, quick sort, merge sort etc.. mostra mais habilidade com a lógica