
为什么这个程序二进制转换不了十进制啊,代码好像没有问题,怎么回事


ocr代码
#<程序2.2:改进后的二-十进制转换>
b=input('\nPlease enter a binary number: ')
d=0;weight=2**(len(b)-1) ;
for i in range(0, len(b)):
if b[i]=='i':
d = d+weight ;
weight=weight//2;
print(d)
if b[i]=='1':
d = d + weight

调整后的代码(也适当“规范”了一下下)
# <程序2.2:改进后的二-十进制转换> #
b = input(f"\nPlease enter a binary number: \n\n{'':>12}_").strip() # 变量b接收键盘输入并去除前后空格。
d = 0 # 十进制结果初值。
weight = 2**(len(b)-1) # 二进制数位权重。
for i in range(len(b)):
if b[i] == '1':
d = d + weight
weight = weight//2
print(d)

更python的代码
# <程序2.2:改进后的二-十进制转换>
b = input(f"\nPlease enter a binary number: \n\n{'':>12}_").strip() # 变量b接收键盘输入并去除前后空格。
d = [int(i[1])*2**i[0] for i in zip(range(len(b))[::-1], b)]
print('\n权重和二进制数位用zip函数组成元组:\n', *zip(range(len(b))[::-1], b), f"\n\n据元组计算二进制数位的十进制值:\n{d} = {sum(d)}")