Skip to main content
 首页 » 编程设计

python之在 Python 中将字母转换为电话号码的数字

2025年05月04日12kevingrace

我正在尝试编写一个程序,提示用户以字符串形式输入电话号码。输入可以包含字母,程序将字母(无论是大写还是小写)转换为数字,并保持所有其他字符不变。这是我到目前为止所拥有的:

def getNumber(uppercaseLetter): 
    if uppercaseLetter == 'A': 
        number = 2 
    elif uppercaseLetter == 'B': 
        number = 2 
    elif uppercaseLetter == 'C': 
        number = 2 
    elif uppercaseLetter == 'D': 
        number = 3 
    elif uppercaseLetter == 'E': 
        number = 3 
    elif uppercaseLetter == 'F': 
        number = 3 
    elif uppercaseLetter == 'G': 
        number = 4 
    elif uppercaseLetter == 'H': 
        number = 4 
    elif uppercaseLetter == 'I': 
        number = 4 
    elif uppercaseLetter == 'J': 
        number = 5 
    elif uppercaseLetter == 'K': 
        number = 5 
    elif uppercaseLetter == 'L': 
        number = 5 
    elif uppercaseLetter == 'M': 
        number = 6 
    elif uppercaseLetter == 'N': 
        number = 6 
    elif uppercaseLetter == 'O': 
        number = 6 
    elif uppercaseLetter == 'P': 
        number = 7 
    elif uppercaseLetter == 'Q': 
        number = 7 
    elif uppercaseLetter == 'R': 
        number = 7 
    elif uppercaseLetter == 'S': 
        number = 7 
    elif uppercaseLetter == 'T': 
        number = 8 
    elif uppercaseLetter == 'U': 
        number = 8 
    elif uppercaseLetter == 'V': 
        number = 8 
    elif uppercaseLetter == 'W': 
        number = 9 
    elif uppercaseLetter == 'X': 
        number = 9 
    elif uppercaseLetter == 'Y': 
        number = 9 
    elif uppercaseLetter == 'Z': 
        number = 9 
    return number 
 
def translateNumber(): 
    phoneNumber = str(input("Enter a string: ")) 
    for char in phoneNumber: 
        if char in    ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']: 
        getNumber(char) 
        return char 
        else: 
            return char 
        print(phoneNumber) 

出于某种原因,我无法让它工作,而且我不确定问题出在哪里。有人可以帮我解决这个问题吗?谢谢!

请您参考如下方法:

不解释您的代码(已由 Chrisitan 完成)。这里只是一个方法:

>>> char_numbers = [('abc',2), ('def',3), ('ghi',4), ('jkl',5), ('mno',6), ('pqrs',7), ('tuv',8), ('wxyz',9)] 
>>> char_num_map = {c:v for k,v in char_numbers for c in k} 
>>> phone = "JUST 1 NUMBER" 
>>> result = "".join(str(char_num_map.get(v,v)) for v in phone.lower()) 
>>> result 
'5878 1 686237'