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
相关产品推荐
相关产品推荐

