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

Python递归实现十进制转其他进制遇参数缺失报错如何解决

问题原因

你运行代码时收到的报错:

TypeError: convert_number() missing 1 required positional argument: 'b'
含义是:调用convert_number函数时,缺少必填的位置参数b。

触发报错的根源是递归调用行的写法错误:你定义函数时明确要求传入2个参数n(待转换数)、b(目标进制),但递归内部写的是convert_number(n // b),只传了1个参数,Python找不到第二个参数b的传入值,就会抛出这个参数缺失的错误。
你提到给b设置默认值后函数能运行,本质是递归调用时自动用默认值补全了b的位置,但这种写法存在逻辑隐患:如果你调用函数时传入的进制和b的默认值不一致,递归计算时会用默认进制做运算,最终得到完全错误的转换结果。
另外你贴出的代码还有Python语法层面的缩进问题:Python靠缩进区分代码块归属,函数内部的逻辑必须相对def行保持统一缩进,否则会先触发缩进错误。

修复方案
  • 递归调用函数时,必须把目标进制b作为第二个参数同步传入
  • 补全n=0的边界判断,避免输入0时无输出、或者递归终止逻辑异常
  • 修正函数内代码的缩进

修复后的可运行代码如下:

def convert_number(n, b):
    # 边界处理:待转换数为0时直接输出0,终止递归
    if n == 0:
        print(0, end="")
        return
    if n >= 1:
        # 递归调用时同时传入n//b和目标进制b两个参数
        convert_number(n // b, b)
    print(n % b, end="")

测试调用convert_number(15, 3),会正确输出三进制结果120(15的三进制计算为19 + 23 + 0*1 = 15,结果正确)。

内容的提问来源于stack exchange,提问作者elli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:06:22