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

为什么我的Python程序无法将英文数字单词转换为对应整数值?

问题原因与修复方案

核心错误点

  • 判断输入类型的逻辑完全错误:isalnum()方法会对纯英文字符也返回True,输入three这类英文数字单词时,程序会错误进入「整数转英文」的分支,根本不会执行英文转数字的逻辑。
  • 整数转英文分支存在笔误:five = four.replace("4", "five")错把字符4替换为five,正确逻辑应该是替换字符5为five。
  • 长度校验逻辑不匹配需求:当前同时校验总字符长度≤5、单词数≤5,英文数字单词本身长度普遍较长,比如three就占5个字符,输入多个英文单词时会直接误判为超出限制。

修复后代码

number = input("Numbers: (max five):\n").strip()

# 改用isdigit判断输入是否为纯数字
is_number = number.isdigit()

if is_number:
    # 数字转英文逻辑,修正笔误
    res = number.replace("1", "one")
    res = res.replace("2", "two")
    res = res.replace("3", "three")
    res = res.replace("4", "four")
    res = res.replace("5", "five")
    res = res.replace("6", "six")
    res = res.replace("7", "seven")
    res = res.replace("8", "eight")
    res = res.replace("9", "nine")
    # 数字场景仅校验位数不超过5
    if len(number) > 5:
        print("Too many numbers given")
    else:
        print(res)
else:
    # 英文转数字逻辑
    res = number.replace("one", "1")
    res = res.replace("two", "2")
    res = res.replace("three", "3")
    res = res.replace("four", "4")
    res = res.replace("five", "5")
    res = res.replace("six", "6")
    res = res.replace("seven", "7")
    res = res.replace("eight", "8")
    res = res.replace("nine", "9")
    res = res.replace(" ", "")
    # 英文场景仅校验单词数不超过5
    word_count = len(number.split())
    if word_count > 5:
        print("Too many numbers given")
    else:
        print(res)

内容的提问来源于stack exchange,提问作者Barnabás Epres

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:30:05