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

十进制转二进制函数异常排查:代码无法运行问题咨询

问题排查与修复方案

我来帮你梳理代码里的问题,你的十进制转二进制的思路是对的,但有两个关键细节没处理好,导致代码无法正常运行:

1. result变量未初始化,触发NameError

当输入的decimal_number不为0时,代码会进入else分支,直接执行while循环里的result = result + '0'或result = result + '1'——但此时result还没有被定义过,Python找不到这个变量,就会抛出NameError。

修复方法:在else块的开头,先给result赋初始空字符串:

else:
    result = ''  # 新增初始化
    while i > 0:
        # 后续代码不变

2. 二进制结果顺序颠倒

当前代码是把每次取余得到的二进制位追加到字符串末尾,但十进制转二进制的逻辑是:第一次取余得到的是二进制的最低位,最后一次取余得到的是最高位。比如输入十进制2,你的代码会输出01,但正确结果应该是10。

修复方法:把新的二进制位加到字符串的开头,而不是末尾:

if i % 2 == 0:
    result = '0' + result  # 改为前置拼接
    i = i//2
else :
    result = '1' + result  # 改为前置拼接
    i = i//2

修复后的完整代码

def binary_converter(decimal_number):
    i = decimal_number
    if i == 0 :
        result = '0'
    else :
        result = ''
        while i > 0:
            if i % 2 == 0:
                result = '0' + result
                i = i//2
            else :
                result = '1' + result
                i = i//2
    return result  # strip()无实际作用,直接返回即可

测试验证

  • 输入0,返回'0',符合预期
  • 输入2,返回'10',符合预期
  • 输入5,返回'101',符合预期

内容的提问来源于stack exchange,提问作者위성률

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:04:13