Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 16, 2018 04:28:14

cryptus
Зарегистрирован: 2018-06-16
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена букв цифрами

Привет всем! Недавно начал изучать 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)

Офлайн

#2 Июнь 16, 2018 08:24:07

spikejke
Зарегистрирован: 2018-02-12
Сообщения: 42
Репутация: +  5  -
Профиль   Отправить e-mail  

Замена букв цифрами

Привет, я создал словарь с ключом буквы, а значение цифры. Затем в цикле проверяю каждый элемент методом 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

Офлайн

#3 Июнь 16, 2018 08:35:42

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Замена букв цифрами

:):) а так профессиональнее?

 tbl = {i:(i-ord('a'))//3+ord("2") for i in range(ord('a'),ord("z")+1)}
word="brtayz"
print(word.translate(tbl))
2782::
На самом деле важна не “профессиональность” а понятность



Офлайн

#4 Июнь 17, 2018 02:21:45

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Замена букв цифрами

  
>>> '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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version