@melirika12

Почему не работает код?

Задача состоит в том, чтобы пользователь вводил номер телефона, где перемешаны буквы и цифры (например, '555-GET-FOOD'), а программа должна заменить все буквы на цифры. Что здесь не так?)

def main():
    list1 = ['2', '3', '4', '5', '6', '7', '8', '9']
    number = input('Введите телефонный номер: ')
    for x in number:
        if x.isalpha():
            if x == 'A' or x == 'B' or x == 'C':
                number.replace(x, list1[0])
            elif x == 'D' or x == 'E' or x == 'F':
                number.replace(x, list1[1])
            elif x == 'G' or x == 'H' or x == 'I':
                number.replace(x, list1[2])
            elif x == 'J' or x == 'K' or x == 'L':
                number.replace(x, list1[3])
            elif x == 'M' or x == 'N' or x == 'O':
                number.replace(x, list1[4])
            elif x == 'P' or x == 'Q' or x == 'R' or x == 'S':
                number.replace(x, list1[5])
            elif x == 'T' or x == 'U' or x == 'V':
                number.replace(x, list1[6])
            elif x == 'W' or x == 'X' or x == 'Y' or x == 'Z':
                number.replace(x, list1[7])
    print(number)
main()
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 2
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Потому что результат замены надо записывать. replace() только возвращает результат, а не изменяет исходную строку.
В целом алгоритм конечно кривой. Чтобы заменить буквы на цифры, не нужно перебирать строку по одной букве. А если уж и делать перебором, как у вас, то тогда собирать новую строку из х.
Но по уму надо просто сделать в цикле замену по словарю

Если уж соревноваться в решениях, хотя автор вроде бы не просил, то беглое гугление даёт
number.translate(''.maketrans("ABCDEFGHIJKLMNOPQRSTUVWXYZ","22233344455566677778889999"))
Ответ написан
Комментировать
sheerluck
@sheerluck
def main():
    data = {"ABC": "2", "DEF": "3", "GHI": "4",
            "JKL": "5", "MNO": "6", "PQRS": "7",
            "TUV": "8", "WXYZ": "9"}
    number = input("Введите телефонный номер: ")
    for x in number:
        if x.isalpha():
            for trio in data:
                if x in trio:
                    number = number.replace(x, data[trio])
                    break
    print(number)
main()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы