Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/120: Рейтинг темы: голосов - 120, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 19

Телефонный номер

15.05.2021, 22:15. Показов 25013. Ответов 9

Студворк — интернет-сервис помощи студентам
На различных сайтах часто требуется ввести номер телефона в определённом формате. Напиши программу, которая будет преобразовывать российский номер телефона в формат +7(КОД)ЧЧЧ-ЧЧ-ЧЧ.
Программа должна получать на вход строку из 11 чисел — номер телефона. Строка может содержать двенадцатый символ — "+" перед номером и может начинаться с +7, 8 или 7. Программа должна выводить номер в заданном виде. Гарантируется, что в номере могут присутствовать только цифры и один знак + (перед номером).

Пример ввода: 89264557895
Вывод: +7(926)455-78-95
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2021, 22:15
Ответы с готовыми решениями:

Телефонный номер
Здравствуйте, помогите пожалуйста с задачей, не могу понять как решается, спасибо! Дан телефонный номер. Напишите программу которая...

Вывести телефонный номер с необходимыми разделителями
Помогите пожалуйста с задачей: С помощью re.sub написать код, который на вход получает номер телефона, а на выход расписывает этот номер...

Телефонный справочник
Всем привет, помогите решить задачу Напишите программу, которая имитировала бы работу простого телефонного справочника. В первой строке...

9
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.05.2021, 22:27
Python
1
2
3
import re
 
print(re.sub(r'\+?[78](\d{3})(\d{3})(\d\d)(\d\d)', r'+7(\1)\2-\3-\4', input()))
1
57 / 15 / 6
Регистрация: 08.08.2020
Сообщений: 266
16.05.2021, 08:07
Python
1
2
3
4
5
6
7
8
9
10
11
12
q1 = [str(i)for i in input("Введите номер телефона: ")]
q = q1[:]
q.insert(-2,"-")
q.insert(-5,"-")
q.insert(-9,")")
q.insert(-13,"(")
if q1[0] == "8":
    q[0] = "+7"
if q1[0] == "+" and q1[1] == "8":
    q.insert(1,"7")
    q.pop(2)
print(''.join(map(str,q)))
1
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 19
16.05.2021, 10:11  [ТС]
Добавлено через 1 минуту
Цитата Сообщение от Zay Посмотреть сообщение
q1 = [str(i)for i in input("Введите номер телефона: ")]
q = q1[:]
q.insert(-2,"-")
q.insert(-5,"-")
q.insert(-9,")")
q.insert(-13,"(")
if q1[0] == "8":
    q[0] = "+7"
if q1[0] == "+" and q1[1] == "8":
    q.insert(1,"7")
    q.pop(2)
print(''.join(map(str,q)))
Цитата Сообщение от iSmokeJC Посмотреть сообщение
import re
print(re.sub(r'\+?[78](\d{3})(\d{3})(\d\d)(\d\d)', r'+7(\1)\2-\3-\4', input()))
не работает, к сожалению

Добавлено через 1 минуту
Цитата Сообщение от iSmokeJC Посмотреть сообщение
import re
print(re.sub(r'\+?[78](\d{3})(\d{3})(\d\d)(\d\d)', r'+7(\1)\2-\3-\4', input()))
выдаёт ошибку 'module' object has no attribute 'sub'

Добавлено через 46 секунд
Цитата Сообщение от Zay Посмотреть сообщение
q1 = [str(i)for i in input("Введите номер телефона: ")]
q = q1[:]
q.insert(-2,"-")
q.insert(-5,"-")
q.insert(-9,")")
q.insert(-13,"(")
if q1[0] == "8":
    q[0] = "+7"
if q1[0] == "+" and q1[1] == "8":
    q.insert(1,"7")
    q.pop(2)
print(''.join(map(str,q)))
ошибок нет, но как правильный код не засчитывает
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
16.05.2021, 10:42
kapurdok, проверил, работает.
0
57 / 15 / 6
Регистрация: 08.08.2020
Сообщений: 266
16.05.2021, 11:26
kapurdok, наверное надо сделать ещё проверку на неправильный ввод, т.е если введенная последовательность короче или длиннее необходимой

Добавлено через 11 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
q1 = [str(i)for i in input("Введите номер телефона: ")]
q = q1[:]
if len(q1) == 11 and q1[0] == "8"  or q1[0] == "+" and len(q1) == 12:
        q.insert(-2,"-")
        q.insert(-5,"-")
        q.insert(-9,")")
        q.insert(-13,"(")
        if q1[0] == "8":
            q[0] = "+7"
        if q1[0] == "+" and q1[1] == "8":
            q.insert(1,"7")
            q.pop(2)
        print(''.join(map(str,q)))
else:
    print("Неправильный ввод")
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
16.05.2021, 11:33
по хорошему начинать нужно
со строки удалить всё кроме знака +, и цифр
она должна быть из 11 или 12 знаков
первый знак должен быть +, 7, 8
0
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 19
16.05.2021, 13:12  [ТС]
Цитата Сообщение от Zay Посмотреть сообщение
q1 = [str(i)for i in input("Введите номер телефона: ")]
q = q1[:]
if len(q1) == 11 and q1[0] == "8"  or q1[0] == "+" and len(q1) == 12:
        q.insert(-2,"-")
        q.insert(-5,"-")
        q.insert(-9,")")
        q.insert(-13,"(")
        if q1[0] == "8":
            q[0] = "+7"
        if q1[0] == "+" and q1[1] == "8":
            q.insert(1,"7")
            q.pop(2)
        print(''.join(map(str,q)))
else:
    print("Неправильный ввод")
я нашёл одну деталь, из-за которой не проходил ответ. в задании написано "номер может начинаться на +7, 8 или 7", но при вводе номера с первым символом "7", например "79264557895" выводит "7(926)455-78-95" БЕЗ плюса в начале, с "8" или "+7" в начале всё хорошо
0
57 / 15 / 6
Регистрация: 08.08.2020
Сообщений: 266
16.05.2021, 13:22
Лучший ответ Сообщение было отмечено kapurdok как решение

Решение

3 и 8 строки
Python
1
2
3
if len(q1) == 11 and q1[0] == "8" or q1[0] == "7"  or q1[0] == "+" and len(q1) == 12:
 
if q1[0] == "8" or q1[0] == "7":
1
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 19
16.05.2021, 13:24  [ТС]
спасибо! всё работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2021, 13:24
Помогаю со студенческими работами здесь

Телефонный справочник
Помогите пожалуйста решить задачу! Напишите программу, которая имитировала бы работу простого телефонного справочника. В первой строке...

Телефонный справочник
Здравствуйте! Столкнулся с некоторыми проблемами реализации телефонного справочника. Условия: Для меня не понятно как лучше...

Телефонный справочник
Помогите, пожалуйста, написать программу. Я запуталась в ее написании( Требования к программе: 1) При запуске программы (скрипта),...

Написать программу - телефонный справочник (на основании словарей)
Здравствуйте, в общем нужно написать программу - телефонный справочник (на основании словарей). Нужны такие функции как добавление записи,...

Как указать номер элемента в матрице и номер итерации в Python?
Привет!! Помогите, пожалуйста, не знаю как реализовать в питоне. Рассматриваю алгоритм Тёрнбулла, так вот при реализации возникла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru