You need to enable JavaScript to run this app. Python数字字符串转英文单词:现有硬编码代码的优化请求
优惠活动
大模型
产品
解决方案
定价
更多

Python数字字符串转英文单词:现有硬编码代码的优化请求

数字字符串转英文单词的可扩展实现方案

针对现有逐if分支硬编码、扩展性差的问题,根据后续的扩展规模,可选择两种可落地的实现路径:

方案1:最小改动替换为字典映射

如果后续需要支持的转换数字数量不多、没有全范围通用数字的需求,直接把分散的if判断替换为独立的键值映射字典是成本最低的优化方式:

  • 把「数字字符串-对应英文单词」的匹配关系统一存放到单独的字典中,和核心循环逻辑完全解耦
  • 后续新增转换规则只需要在字典里补条目,完全不需要修改循环判断的代码
  • 自带兜底取值能力,避免漏配规则时直接抛出程序异常

示例代码:

# 转换规则映射表,新增规则直接在此处补充即可
num_rule_map = {
    '33': 'thirty three',
    '12': 'twelve',
    '45': 'forty five'
}
source_nums = ['33', '12', '45']
for num_str in source_nums:
    # 用get方法设置默认值,避免触发KeyError
    print(num_rule_map.get(num_str, f'{num_str} 暂未配置转换规则'))

原代码中for i in range(len(n))的写法属于冗余写法,因为循环逻辑里根本没有用到索引值i,直接迭代列表元素即可,没必要额外生成索引值。

方案2:数位拆解实现全范围通用转换

如果后续需要覆盖0-99甚至更大范围的通用数字转换,不需要逐个手动编写映射规则,只需要定义基础数位的不规则拼写词表,按数位组合逻辑自动生成转换结果,几乎零成本覆盖全范围数字:

  • 预定义小于20的特殊数字(这类数字没有通用拼写规则,需要单独配置)
  • 预定义十位的拼写规则,自动组合生成个位的拼写
  • 所有不规则的特殊拼写只需要配置一次,后续涉及该数位的数字转换会自动复用

示例代码:

# 特殊不规则拼写配置
special_words = {
    0: '', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five',
    6: 'six', 7: 'seven', 8: 'eight', 9: 'nine', 10: 'ten',
    11: 'eleven', 12: 'twelve', 13: 'thirteen', 15: 'fifteen',
    18: 'eighteen'
}
# 十位特殊拼写配置
ten_place_words = {
    2: 'twenty', 3: 'thirty', 4: 'forty', 5: 'fifty', 8: 'eighty'
}
def convert_num_str_to_en(num_str):
    # 完成字符串到整数的转换,用于数位拆解
    target_num = int(num_str)
    # 小于20的数字直接匹配特殊词表
    if target_num < 20:
        return special_words[target_num]
    # 拆解十位、个位数值
    ten_value = target_num // 10
    unit_value = target_num % 10
    # 拼接完整英文单词
    ten_part = ten_place_words.get(ten_value, special_words[ten_value] + 'ty')
    unit_part = special_words[unit_value]
    return ' '.join([part for part in [ten_part, unit_part] if part])
# 调用测试
source_nums = ['33', '12', '45']
for num_str in source_nums:
    print(convert_num_str_to_en(num_str))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 12:45:04