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

Python数字转大写英文函数运行仅输出空白无转换结果问题排查

错误原因分析
  • 核心返回逻辑错误:return newstring 缩进位置错误,被嵌套在start_position < 1的else分支中,且位于该分支的return "INVALID"语句之后,永远不会被执行。当入参合法、走完字符处理逻辑后,函数无显式返回值,默认返回None,打印时就会呈现空白内容。
  • 入口代码书写错误:主函数判断语句应为if __name__ == "__main__",原代码缺少变量两侧的双下划线,导致入口打印逻辑不会自动执行。
  • 内容丢失缺陷:仅处理了指定区间内的字符,没有将end_position之后的原字符串内容拼接回结果,会丢失区间外的后半段内容。
  • 冗余空格问题:初始化newstring时默认加了前置空格,且数字替换时前后都额外拼接空格,会产生多余的连续空格。
修复方案
  1. 调整return newstring的缩进层级,与最外层的入参判断平级,确保处理完字符后能正常返回结果。
  2. 修正主函数的__name__、__main__的双下划线写法,保证入口代码正常执行。
  3. 处理完指定区间的字符后,将end_position索引之后的原字符串内容拼接至结果末尾,保留区间外的原始内容。
  4. 移除newstring初始化的前置空格,新增连续空格清理逻辑,避免输出多余空格。
  5. 删除冗余的new_string变量,直接用原字符串长度做参数合法性判断,简化逻辑。
修复后完整代码
def convert_digits(input_string, start_position, end_position):
    newstring = ""
    digit_mapping = {
        '0': 'ZERO',
        '1': 'ONE',
        '2': 'TWO',
        '3': 'THREE',
        '4': 'FOUR',
        '5': 'FIVE',
        '6': 'SIX',
        '7': 'SEVEN',
        '8': 'EIGHT',
        '9': 'NINE'
    }
    # 参数合法性校验
    if start_position >= 1 and end_position <= len(input_string) and start_position < end_position:
        # 拼接指定区间前的原始内容
        newstring += input_string[:start_position-1]
        # 处理指定区间内的字符
        for index in range(start_position - 1, end_position):
            if input_string[index].isdigit():
                mapped = digit_mapping[input_string[index]]
                newstring += f" {mapped} "
            else:
                newstring += input_string[index]
        # 拼接指定区间后的原始内容
        newstring += input_string[end_position:]
        # 清理多余的连续空格
        newstring = " ".join(newstring.split())
        return newstring
    else:
        return "INVALID"

if __name__ == "__main__":
    print(convert_digits("you are a 4king 5shole", 1, 21))
运行效果

调用示例代码后输出结果为:
you are a FOUR king FIVE shole
符合指定区间内数字转大写英文的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:03