Почему не работает код?
Потому что результат замены надо записывать. replace() только возвращает результат, а не изменяет исходную строку.  
В целом алгоритм конечно кривой. Чтобы заменить буквы на цифры, не нужно перебирать строку по одной букве. А если уж и делать перебором, как у вас, то тогда собирать новую строку из х.
Но по уму надо просто сделать в цикле замену по словарю

Если уж соревноваться в решениях, хотя автор вроде бы не просил, то беглое гугление даёт 
number.translate(''.maketrans("ABCDEFGHIJKLMNOPQRSTUVWXYZ","22233344455566677778889999"))
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()