28. Текстовые сообщения.

(открыть в новой вкладке)

Условие:

На старых мобильных телефонах текстовые сообщения набирались при помощи цифровых кнопок. При этом одна кнопка была ассоциирована сразу с несколькими буквами, а выбор зависел от количества нажатий на кнопку. Однократное нажатие приводило к появлению первой буквы в соответствующем этой кнопке списке, последующие нажатия меняли ее на следующую. Список символов, ассоциированных с цифровой панелью, приведен в словаре:
start_dict = { 1: ".,?!:", 2: "abc", 3: "def", 4: "ghi", 5: "jkl", 6: "mno", 7: "pqrs", 8: "tuv", 9: "wxyz", 0: " " }
Напишите программу, отображающую последовательность кнопок, которую необходимо нажать, чтобы на экране телефона появился текст, введенный пользователем. Создайте словарь, сопоставляющий символы с кнопками, которые необходимо нажать, а затем воспользуйтесь им для вывода на экран последовательности кнопок в соответствии с введенным пользователем сообщением по запросу. Например, на ввод строки <Hello, World!> ваша программа должна откликнуться следующим выводом: 4433555555666110966677755531111. Удостоверьтесь, что ваша программа корректно обрабатывает строчные и прописные буквы. Если ввести в вашем тексте цифры, то они должны быть выведены в скобках.

Код:

# ввод данных
start_dict = {
    1: ".,?!:",
    2: "abc",
    3: "def",
    4: "ghi",
    5: "jkl",
    6: "mno",
    7: "pqrs",
    8: "tuv",
    9: "wxyz",
    0: " "
}

# составим словарь с соответствиями для каждого символа
finish_dict = {}
for a, b in start_dict.items():
    count = 0
    for i in b:
        count += 1
        finish_dict[i] = int(count * str(a))

# ввод строки для преобразования
print()
text = input("%100s" % "Введите текст для преобразования: ")
print()

# выведем преобразованный текст 
for i in text:
    i = i.lower()
    if i not in finish_dict:
        print(f"({i})", end="")
    else:
        print(finish_dict[i], end="")
print()
print()