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

Python中递归调用ord()实现字符串转数字的代码问题咨询

代码问题排查&修正

你的代码存在两处核心错误:

  • 递归参数调用非法:ord()仅支持传入单个字符组成的字符串,你给递归函数传入ord(s[1:]),s[1:]是子字符串,会直接触发TypeError。
  • 返回值类型不匹配:基线条件返回空列表[],但递归分支用整数ord(s[0])做加法运算,整数和列表无法相加,同样会触发类型错误。

需求对应实现

场景1:将字符串每个字符的ASCII值转为数值列表

def string_to_num(s):
    # 基线条件:空字符串无需处理,直接返回空列表终止递归
    if s == "":
        return []
    # 递归条件:拼接当前字符的ASCII值 + 剩余子串的处理结果
    return [ord(s[0])] + string_to_num(s[1:])

场景2:将纯数字字符串(如"1234")转为对应的整数数值

def string_to_num(s):
    # 基线条件:单个字符无需拆分,直接返回对应整数
    if len(s) == 1:
        return int(s)
    # 递归条件:当前位数值乘以对应数位权重 + 剩余子串的转换结果
    return int(s[0]) * (10 ** (len(s)-1)) + string_to_num(s[1:])

递归条件设置逻辑

  • 基线条件:对应不需要再拆分的最小子问题,直接返回已知结果即可,空字符串、长度为1的字符串都是字符串处理类递归的典型基线条件。
  • 递归条件:把当前问题拆成「当前步处理内容」+「更小的子问题」两部分,处理完当前步内容后,把剩余部分交给递归函数处理,再合并两部分的结果得到当前问题的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:09:06