Python3.6如何用单词翻译电话号码

2024-10-08 22:23:09 发布

您现在位置:Python中文网/ 问答频道 /正文

试图让这个程序把字母翻译成数字,这样一个电话号码和文字可以输入和输出数字版本。(1800GOTJUNK=18004685865)不确定我哪里出错了,但每个输出只给出最后一个字母,并对所有数字重复其编号(1800adgjmptw=1800999999)。任何帮助都将不胜感激,谢谢。在

def transNum(string):
    number = 1
    for ch in string:
        if 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
    return number


def translate(phone):
    newNum = ""
    for ch in phone:
        if ch 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"]:
            newNum = newNum + str(transNum(phone))
        else:
            newNum = newNum + ch
    return newNum

def main():
    phone = input("enter a phone number")
    noLetters = translate(phone)
    print("The number you entered: ", phone)
    print("Translates to: ", noLetters)

main()

Tags: innumberforstringreturnifdef字母
3条回答

str(transNum(phone))应该是str(transNum(ch)) transNum不需要迭代它的输入,因为它只保留最后一个数字(它的设计是以一个字母作为输入)。在

我不能帮你做这件事,但至少可以让你更容易思考。使用字典将键映射到值,而不是用所有这些if杀死一些独角兽。在

所以你可以这样做

ch_num_map = {'a': 2, 'b': 2, 'c': 2, 'w': 9, 'z': 9} # you get the idea

然后您可以简单地执行以下操作:

^{pr2}$

这里的问题是在transNum函数中循环整个字符串。你想要的是传递一个字符并得到它的数字表示。试试这个:

def transNum(ch):
    number = 1
    if 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
    return number


def translate(phone):
    newNum = ""
    for ch in phone:
        if ch in "abcdefghijklmnopqrstuvwxyz"
            newNum = newNum + str(transNum(ch))
        else:
            newNum = newNum + ch
    return newNum

我希望这有帮助。在

相关问题 更多 >

    热门问题