Python二进制转十进制程序无法运行,请求排查问题原因
二进制转十进制代码的问题与修复
核心错误
你的思路没问题,但循环里的一个低级错误导致程序失效:
- 你在计算时用了
int(numb),这会把整个输入的二进制字符串转换成整数,而不是当前遍历到的单个字符items。每次循环累加的都是整个数乘以对应次幂,结果自然完全错误。
修复后的代码
numb = input('enter binary number : ') s = 0 p = 1 for items in numb: # 替换为当前位的整数,而非整个字符串 s += int(items) * (2 ** (len(numb) - p)) p += 1 print(s)
更简洁的优化写法
可以用enumerate直接获取每一位的索引,不用手动维护p变量:
numb = input('enter binary number : ') total = 0 bit_length = len(numb) for index, bit_char in enumerate(numb): # 索引从0开始,对应次幂为 总长度-1-索引 total += int(bit_char) * (2 ** (bit_length - 1 - index)) print(total)
效果验证
输入二进制数101,修复后的代码计算过程:
- 第一位
1:1 × 2² = 4 - 第二位
0:0 × 2¹ = 0 - 第三位
1:1 × 2⁰ = 1
最终累加结果为5,和二进制转十进制的正确结果一致。
内容的提问来源于stack exchange,提问作者Aniruddh Setia
相关产品推荐
相关产品推荐

