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

Python中使用字典替代if语句实现文本数字转数值功能的问题排查

问题原因

你改写后的代码存在判断条件的手误:

  • 原始代码中判断逻辑是校验当前遍历字符是否为空格:if i == ' '(单引号中间包含1个空格字符)
  • 你改写后的判断条件写为if i == ''(单引号中间没有内容,代表空字符串)

空格是ASCII码为32的有效字符,和空字符串完全不等,因此遍历到空格时触发不了if分支,会进入else分支把空格也拼接到temp变量中,后续查字典时会因为键不存在报错,也无法正常拆分单词。

修正后的可运行代码

def text_to_digit(s):
    temp=''
    num=''
    d={'one':'1', 'two':'2', 'three':'3', 'four': '4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9', 'zero':'0'}
    for i in s:
        # 修正为判断空格字符
        if i == ' ':
            num = num + d[temp]
            temp=''
        else: 
            temp = temp + i
        
    num=num+d[temp]
    return int(num)

如果需要兼容非法输入的场景,可以把字典取值逻辑替换为d.get(temp, ''),避免非法单词触发KeyError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:54:04