Вы сравниваете строку "0"
с числом 0, и они, как правило, неравны.
Таким образом, вопреки тому, что вы говорите, l oop на самом деле циклично; но оператор if
никогда не будет истинным.
Конечно, вы также должны, вероятно, добавлять, когда число равно 1, а не когда оно равно 0.
def bin_to_dec(bin):
bin = bin[::-1]
res = 0
for i in range(len(bin)):
if int(bin[i]) == 1:
res += 2**i
return res
Обратите внимание на добавление int()
.