Форум сайта python.su
0
Привет всем! Недавно начал изучать Python и вот решил написать небольшую программку которая заменяет буквы на цифры по принципу телефона: (2 - a,b,c) (3-d,e,f) (4-g,h,i) и т.д. В голову пришёл только такой вариант (код ниже). Хотя программка и работает правильно, но мне кажется что код выглядет непрофессионально. Если другой более лёгкий и более короткий способ написания данной программы.
Заранее спасибо!
word = input("Enter the word: ") newWord = word.replace("a", "2") newWord1 = newWord.replace("b", "2") newWord2 = newWord1.replace("c", "2") newWord3 = newWord2.replace("d", "3") newWord4 = newWord3.replace("e", "3") newWord5 = newWord4.replace("f", "3") newWord6 = newWord5.replace("g", "4") newWord7 = newWord6.replace("h", "4") newWord8 = newWord7.replace("i", "4") newWord9 = newWord8.replace("j", "5") newWord10 = newWord9.replace("k", "5") newWord11 = newWord10.replace("l", "5") newWord12 = newWord11.replace("m", "6") newWord13 = newWord12.replace("n", "6") newWord14 = newWord13.replace("o", "6") newWord15 = newWord14.replace("p", "7") newWord16 = newWord15.replace("q", "7") newWord17 = newWord16.replace("r", "7") newWord18 = newWord17.replace("s", "7") newWord19 = newWord18.replace("t", "8") newWord20 = newWord19.replace("u", "8") newWord21 = newWord20.replace("v", "8") newWord22 = newWord21.replace("w", "9") newWord23 = newWord22.replace("x", "9") newWord24 = newWord23.replace("y", "9") newWord25 = newWord24.replace("z", "9") print(newWord25)
Офлайн
5
Привет, я создал словарь с ключом буквы, а значение цифры. Затем в цикле проверяю каждый элемент методом isalpha если элемент является алфавитным, заменяем его и перезаписываем слово.
numwords = {"a":"1", "b":"2", "c":"3"} word = "1a2b3c" for letter in word: if letter.isalpha(): word = word.replace(letter, numwords[letter]) print(word) # Вывод 112233
Офлайн
253
:):) а так профессиональнее?
tbl = {i:(i-ord('a'))//3+ord("2") for i in range(ord('a'),ord("z")+1)} word="brtayz" print(word.translate(tbl)) 2782::
Офлайн
857
>>> '1-800-ABC-ZYX-CALL-FREE'.lower().translate(str.maketrans('abcdefghijklmnopqrstuvwxyz', '22233344455566677778889999')) '1-800-222-999-2255-3733' >>>
Отредактировано py.user.next (Июнь 17, 2018 02:25:23)
Офлайн