You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:05:18