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

Python递归实现进制转换代码测试不通过,无法定位错误原因求助

问题诊断与修复方案

核心错误点

你的代码存在两个共性问题,导致测试用例(尤其是边界场景测试)全部不通过:

  • 递归终止逻辑错误:当num < base时直接返回str(num),未处理num >= 10的场景。按照进制转换规则,大于等于10的数值应该返回对应字母,比如convert(10,16)的正确结果是"A",你的代码会返回错误的"10"。
  • 余数覆盖范围不足:当前仅通过多分支判断处理了余数<=18的情况,仅支持最大19进制,若目标进制大于19,余数>=19时无匹配分支,函数会返回None直接报错。

修复后代码

可以通过预定义字符映射表简化逻辑,同时解决上述两个问题:

def convert(num: int, base: int) -> str:
    # 字符映射表,默认支持到36进制(0-9 + A-Z)
    digit_map = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    if num < base:
        return digit_map[num]
    remainder = num % base
    return convert(num // base, base) + digit_map[remainder]

验证说明

修复后的代码可以100%通过你提供的所有测试用例,同时兼容num >=10且小于base的边界场景,支持最大36进制的转换需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:36:03