Написать код самым коротким образом:
input = 89281043293
output = 8 (928) 104-32-93
input = 12321234132
output = -1
input = +79281043293
output = 8 (928) 104-32-93
input = 8 (928) 104-32-93
output = 8 (928) 104-32-93
input = 21321
output = -1
Введенный номер должен соответствовать нормам
и код номера должен соответствовать российским не важно Билайн мегафон или мтс
главное начала от 8 или +7 ну вы поняли
Python
Чтобы код не выглядел громоздким, раскидывай его по отдельным файлам, создавай классы и библиотеки. Делай регионы и т.п.
Вообще не столь важно, сколько строчек в коде. Главное чтобы он легко читался и можно быстро было бы найти нужный участок кода.
Помогите задание по Python
import re
x = input().replace('+7', '8').replace('(', '').replace(')', '').replace('-', '').replace(' ', '')
if re.match('^8\d{10}$', x):
print(f"{x[:1]} ({x[1:4]}) {x[4:7]}-{x[7:9]}-{x[9:]}")
else: print(-1)
Зачем ты все пытаешься сокращать, объясни.Чтобы код не выглядел громоздким, раскидывай его по отдельным файлам, создавай классы и библиотеки. Делай регионы и т.п.
Вообще не столь важно, сколько строчек в коде. Главное чтобы он легко читался и можно быстро было бы найти нужный участок кода.
Но можно еще короче.
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='')
import re
print(
re.fullmatch('^[78]\d{10}$', re.sub('\D', '', num:=input()))
and re.sub(r'(\d)(\d{3})(\d{3})(\d{2})(\d{2})',
r'8 (\2) \3-\4-\5', num) or -1
)
Для решения задачи можно использовать регулярные выражения. Напишем функцию, которая будет принимать номер телефона и проверять его на соответствие формату российского номера. Если номер соответствует формату, то функция вернет номер в формате "8 (XXX) XXX-XX-XX". Если номер не соответствует формату, то функция вернет -1.
Для проверки работы функции можно использовать следующий код:
import re
def format_phone_number(phone_number):
pattern = r'^(\+7|8)?\s?\(?(\d{3})\)?[\s-]?(\d{3})[\s-]?(\d{2})[\s-]?(\d{2})$'
match = re.match(pattern, phone_number)
if match:
groups = match.groups()
return f"8 ({groups[1]}) {groups[2]}-{groups[3]}-{groups[4]}"
else:
return -1
Функция использует регулярное выражение, которое проверяет номер на соответствие формату. Если номер соответствует формату, то функция извлекает из него код города и номер телефона и возвращает номер в нужном формате. Если номер не соответствует формату, то функция возвращает -1. Для проверки работы функции можно использовать следующий код:
assert format_phone_number('89281043293') == '8 (928) 104-32-93'
assert format_phone_number('12321234132') == -1
assert format_phone_number('+79281043293') == '8 (928) 104-32-93'
assert format_phone_number('8 (928) 104-32-93') == '8 (928) 104-32-93'
assert format_phone_number('21321') == -1
Функция использует регулярные выражения, что позволяет сократить код и уменьшить использование памяти. import re
input = input() # ввод номера телефона
# удаляем все символы, кроме цифр
number = re.sub(r'\D', '', input)
# проверяем, начинается ли номер с 8 или +7
if number.startswith('8'):
number = '7' + number[1:]
elif number.startswith('+7'):
number = number[1:]
# проверяем длину номера
if len(number) == 10:
formatted_number = '8 ({}) {}-{}-{}'.format(number[:3], number[3:6], number[6:8], number[8:])
print(formatted_number)
else:
print(-1)
Центр Электроники
оо спасибо!)
Прозрачный
```python
import re
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.
import re
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.
Центр Электроники
Благодарю!)
скрепка у зеркала пилота
Похожие вопросы
- Помогите пожалуйста с заданием на python
- Помогите ответить на задание в Python
- Помогите решить задания на python
- Решите задание на python
- Помогите улучшить скрипт python
- Добрый день, помогите реализовать на Python или C#
- Помогите решить задачу python
- Помогите со змей (Python)
- Срочно помогите задача по Python!!!
- Помогите пожалуйста с Python