2017-05-26 5 views
0
def get_phone_number(word_str): 
    numpad_dict={'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 = '0800painter' 
    re_text = '' 
    for digit in number: 
     re_text += str(numpad_dict.get(digit, digit)) 
    return re_text 


def test_get_phone_number(): 
    print(get_phone_number('0800painter')) 
    print(get_phone_number('0800fixnow')) 

def main(): 
    print("===========\nQuestion 1:") 
    test_get_phone_number() 
main() 

Ausgang:Wie konvertiert Buchstaben in Zahlen in dict

=========== 
Question 1: 
08007246837 
08007246837 

ich von meiner ersten def Funktion eine Antwort bekam, wie zweite Antwort zu erhalten, basierend auf ‚0800fixnow‘? Muss ich zwei for-Schleife schreiben, um die Antwort zu erhalten oder nur eine?

Antwort

0

Sie definieren die Nummer in der get_phone_number-Funktion und verwenden nicht die in den Funktionsargumenten angegebene Nummer. Ändern Sie die Funktion zu

def get_phone_number(word_str): 
    numpad_dict={'a': 2, ..., 'z': 9} # Shortened for example 
    re_text = '' 
    for digit in word_str: 
     re_text += str(numpad_dict.get(digit, digit)) 
    return re_text 

sollte Ihr Problem beheben.

+0

Kein Bedarf, 'str', entweder zu nennen. – DyZ

+0

@DYZ in Zeile 5? 're_text + = str (...)' – njoosse

+0

Richtig. Numpad_dict-Werte sind bereits Zeichenfolgen. – DyZ

0
numpad_dict = { 
    2: "abc", 
    3: "def", 
    4: "ghi", 
    5: "jkl", 
    6: "mno", 
    7: "pqrs", 
    8: "tuv", 
    9: "wxyz" 
} 

def letter_to_number(phone_number): 
    output = "" 
    for character in phone_number: 
    try: 
     int(character) 
     output += character 
    except ValueError: 
     for key in numpad_dict: 
     if character in numpad_dict[key]: 
      output += str(key) 
      break 
    return output 

print(letter_to_number('0800painter')) 
print(letter_to_number('0800fixnow')) 

# returns 

08007246837 
0800349669 
Verwandte Themen