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

Python中如何对输入的字符串形式数字相加并返回字符串结果

英文数字字符串相加实现(无外部库)

核心优化思路

之前用列表通过索引映射的方式效率低,本质是字符串转数字时需要遍历列表查找索引(时间复杂度O(n))。改用双向字典映射可将查找操作降到O(1),大幅提升效率,尤其当支持的数字范围扩大时优势更明显。

实现步骤

  1. 构建双向映射字典
    先定义英文数字到阿拉伯数字的映射,再通过反转字典得到反向映射,避免重复手写:
# 定义英文到数字的基础映射(可按需扩展至更大数字,比如twenty、hundred等)
word_to_num = {
    'zero': 0,
    'one': 1,
    'two': 2,
    'three': 3,
    'four': 4,
    'five': 5,
    'six': 6,
    'seven': 7,
    'eight': 8,
    'nine': 9,
    'ten': 10,
    'eleven': 11,
    'twelve': 12,
    'thirteen': 13,
    'fourteen': 14,
    'fifteen': 15,
    'sixteen': 16,
    'seventeen': 17,
    'eighteen': 18,
    'nineteen': 19,
    'twenty': 20
}
# 反转字典生成数字到英文的映射
num_to_word = {value: key for key, value in word_to_num.items()}
  1. 实现相加逻辑
    完成“英文转数字→求和→数字转英文”的完整流程:
def add_word_numbers(num1_str, num2_str):
    # 统一转小写避免大小写问题
    num1 = word_to_num[num1_str.lower()]
    num2 = word_to_num[num2_str.lower()]
    total = num1 + num2
    return num_to_word[total]

测试示例

# 测试题目示例输入
print(add_word_numbers('three', 'seven'))  # 输出: 'ten'

可选扩展:异常处理

如果需要处理无效输入(比如不在映射范围内的字符串),可添加异常捕获:

def add_word_numbers_safe(num1_str, num2_str):
    try:
        num1 = word_to_num[num1_str.lower()]
        num2 = word_to_num[num2_str.lower()]
        total = num1 + num2
        return num_to_word.get(total, f"Unsupported number result: {total}")
    except KeyError:
        invalid_inputs = []
        if num1_str.lower() not in word_to_num:
            invalid_inputs.append(num1_str)
        if num2_str.lower() not in word_to_num:
            invalid_inputs.append(num2_str)
        return f"Invalid input(s): {', '.join(invalid_inputs)}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:50:40