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

Python字母电话号码转纯数字代码输出异常问题求助

问题排查结论

你的条件判断写法存在语法逻辑错误,这是导致字母映射不全的根本原因:
Python中"A" or "B" or "C"这类表达式不会实现「匹配三个值中任意一个」的效果,or属于短路逻辑运算符,会返回运算中第一个为真的值,非空字符串永远为真,所以这个表达式的计算结果永远是每组的第一个字符:

  • "A" or "B" or "C" 结果永远是"A"
  • "D" or "E" or "F" 结果永远是"D"
  • "G" or "H" or "I" 结果永远是"G"
  • 其余分组同理,仅每组第一个字母能进入对应数字映射分支,同组其他字母全部匹配失败,直接走else分支保留原始字符,和你遇到的异常现象完全吻合:
    • 输入1800FLOWERS时,仅W是WXYZ分组的首字符,被转为9,其余F/L/O/E/R/S都不是对应分组首字符,原样保留,输出1800FLO9ERS
    • 输入1800GOTJUNK时,G(GHI首字符)转4、T(TUV首字符)转8、J(JKL首字符)转5,其余字母原样保留,输出18004O85UNK
    • 输入1800BIGFISH时,仅G(GHI首字符)转4,其余字母原样保留,输出1800BI4FISH
修复方法

把所有等值判断改为成员判断,用in关键字判断字符是否属于对应字母元组即可,修复后完整代码如下:

phonenumber = input("Please input the number you would like to translate, starting with 1800 now, no hyphens:")

def FindNumber(phonenumber):
    number = ""
    for char in phonenumber:
        if char in ("A", "B", "C"):
            number = number + "2"
        elif char in ("D", "E", "F"):
            number = number + "3"
        elif char in ("G", "H", "I"):
            number = number + "4"
        elif char in ("J", "K", "L"):
            number = number + "5"
        elif char in ("M", "N", "O"):
            number = number + "6"
        elif char in ("P", "Q", "R", "S"):
            number = number + "7"
        elif char in ("T", "U", "V"):
            number = number + "8"
        elif char in ("W", "X", "Y", "Z"):
            number = number + "9"
        else:
            number = number + char
    return number
   
print("The number you want to call is", FindNumber(phonenumber))

测试验证:

  • 输入1800FLOWERS输出18003569377
  • 输入1800GOTJUNK输出18004685865
  • 输入1800BIGFISH输出18002443474
    转换结果完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:54:27