2014-03-06 24 views
1

我正在嘗試編寫一個程序,提示用戶輸入電話號碼作爲字符串。輸入可以包含字母,程序將字母(大寫或小寫)轉換爲數字,並保留所有其他字符不變。這是我到目前爲止:在Python中將一個字母轉換爲電話號碼的數字

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) 

由於某種原因,我不能得到它的工作,我不確定是什麼問題。有人可以幫我解決這個問題嗎?謝謝!

回答

5

不解釋你的代碼(已經被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' 
+0

問題是,如果我想輸入一個數字,請說:1-800-Flowers,但我希望它返回1-800-3569377。我該怎麼做呢? – user3105664

+0

它已經這樣做了。只需用「1-800-Flowers」填充「phone」變量... – mshsayem

+0

謝謝!我在那個錯誤。我非常感謝幫助 – user3105664

3

您的功能getNumber()會返回一個數字,但您並未保存它。要保存它,把結果賦值給一個變量,然後返回它:

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']: 
      result = getNumber(char) 
      return result 
     else: 
      return char 
+0

該解決方案實際上回答了「爲什麼我的功能不起作用」這個問題。其他解決方案是獲得理想結果的其他方法。 – RufusVS

相關問題