Но можно еще короче. import re
x = input().replace('+7', '8').replace(' ', '').replace('(', '').replace(')', '').replace('-', '')
if re.match('8\d{10}', x) is None:
print(-1)
else:
print(x[0], ' (', x[1:4], ') ', x[4:7], '-', x[7:9], '-', x[9:], sep='')
def format_phone_number(input_number):
number = re.sub(r'[^\d+]', '', input_number) # удаляем все, кроме цифр и плюса
if len(number) == 11 and number[0] == '8':
return '8 ({0}) {1}-{2}-{3}'.format(number[1:4], number[4:7], number[7:9], number[9:])
elif len(number) == 12 and number[0:2] == '+7':
return '8 ({0}) {1}-{2}-{3}'.format(number[2:5], number[5:8], number[8:10], number[10:])
else:
return '-1'
# Примеры использования
print(format_phone_number('89281043293') # 8 (928) 104-32-93
print(format_phone_number('12321234132') # -1
print(format_phone_number('+79281043293') # 8 (928) 104-32-93
print(format_phone_number('8 (928) 104-32-93') # 8 (928) 104-32-93
print(format_phone_number('21321') # -1
```
Код использует модуль `re` для удаления из номера всего, кроме цифр и плюса, а затем проверяет, соответствует ли номер формату российского номера телефона. Если да, то он форматируется в требуемый вид, если нет - возвращается -1.