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

Python 3.6 带字母电话号码转数字功能异常排查求助

解决字母转电话号码数字的输出异常问题

嘿,我一眼就看到问题出在哪啦!你的代码逻辑犯了一个典型的错误——没有拼接结果,而是每次都覆盖了整个变量,这才导致最后所有字母位置都变成了最后一个字母对应的数字。

问题根源分析

你看,你初始化number = 1(这本身就不对,应该用字符串来拼接结果),然后在循环里每次遇到字母就直接给number赋值单个数字(比如number = 2)。这意味着每循环一次,number就被完全替换成当前字母对应的数字,循环结束后自然只剩下最后一个字母的数字值。再加上你可能后续错误地把这个数字重复填充了所有字母的位置,就出现了你看到的18009999999这种结果。

修正后的代码实现

正确的思路应该是用一个空字符串来逐步拼接每个字符对应的数字,同时保留原字符串中的数字字符。这里给你两种实现方式:

方式一:用条件判断逐个处理

def transNum(string):
    number = ""  # 初始化为空字符串,用来拼接最终结果
    for ch in string:
        # 如果是数字,直接添加到结果里
        if ch.isdigit():
            number += ch
        elif ch.lower() in "abc":
            number += "2"
        elif ch.lower() in "def":
            number += "3"
        elif ch.lower() in "ghi":
            number += "4"
        elif ch.lower() in "jkl":
            number += "5"
        elif ch.lower() in "mno":
            number += "6"
        elif ch.lower() in "pqrs":
            number += "7"
        elif ch.lower() in "tuv":
            number += "8"
        elif ch.lower() in "wxyz":
            number += "9"
        # 可选:处理非法字符,比如直接忽略或者保留原字符
        # else:
        #     number += ch
    return number

# 测试示例
print(transNum("1800GOTJUNK"))  # 输出:18004685865
print(transNum("1800adgjmptw"))  # 输出:18002456789

方式二:用字典映射(更简洁易维护)

如果后续需要调整映射规则,用字典会更方便:

def transNum(string):
    # 先定义字母到数字的映射字典
    char_to_num = {
        'a':'2', 'b':'2', 'c':'2',
        'd':'3', 'e':'3', 'f':'3',
        'g':'4', 'h':'4', 'i':'4',
        'j':'5', 'k':'5', 'l':'5',
        'm':'6', 'n':'6', 'o':'6',
        'p':'7', 'q':'7', 'r':'7', 's':'7',
        't':'8', 'u':'8', 'v':'8',
        'w':'9', 'x':'9', 'y':'9', 'z':'9'
    }
    number = ""
    for ch in string:
        if ch.isdigit():
            number += ch
        else:
            # 转小写后查字典,找不到的字符默认保留原字符
            number += char_to_num.get(ch.lower(), ch)
    return number

验证效果

运行上面的代码,输入1800GOTJUNK会正确输出18004685865,输入1800adgjmptw也会得到18002456789,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:50:55