Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/41: Рейтинг темы: голосов - 41, средняя оценка - 4.90
29 / 29 / 0
Регистрация: 31.01.2020
Сообщений: 181

Номера телефонов 3

17.10.2020, 08:49. Показов 9160. Ответов 7

Студворк — интернет-сервис помощи студентам
Доработайте программу 2 таким образом, чтобы вместо слова error на экран выводились диагностические сообщения:

"неверный формат" – нарушаются соглашения о пробелах, тире и / или скобках, а также присутствуют дополнительные символы, например, буквы.
"неверное количество цифр", если цифр в телефоне в итоге не 11. Присутствует, только если формат оказался верным, то есть нет причин сообщать о предыдущей ошибке.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.10.2020, 08:49
Ответы с готовыми решениями:

Номера телефонов 1
Огромное количество программ сталкиваются с обработкой входящих данных, их преобразованием и проверкой на корректность. Давайте попробуем...

Номера телефонов
Огромное количество программ сталкиваются с обработкой входящих данных, их преобразованием и проверкой на корректность. Давайте попробуем...

Дан файл Т, который содержит номера телефонов сотрудников учреждения: указывается фамилия, инициалы и номер телефона. На
Дан файл Т, который содержит номера телефонов сотрудников учреждения: указывается фамилия, инициалы и номер телефона. Найти номер телефона...

7
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
17.10.2020, 08:59
Цитата Сообщение от playandwork Посмотреть сообщение
Доработайте программу 2
Где это программа?
0
0 / 0 / 0
Регистрация: 28.03.2022
Сообщений: 1
01.10.2022, 17:41
[OFF]
0
0 / 0 / 0
Регистрация: 22.12.2021
Сообщений: 30
18.11.2022, 23:05
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def correct_tel(tel):
    try:
        tel = ''.join(tel.split())
        if tel[:2] == '+7' or tel[0] == '8':
            if not all(tel.split('-')):
                raise ValueError
            else:
                tel = tel.replace('-', '')
            open_bt = tel.count('(')
            end_bt = tel.count(')')
            if tel.find('(') > tel.find(')'):
                raise ValueError
            if open_bt != end_bt or open_bt > 1 and end_bt > 1:
                raise ValueError
            tel = tel.replace('(', '')
            tel = tel.replace(')', '')
            if tel[0] == '8':
                tel = '+7' + tel[1:]
            if not tel[1:].isdigit() or not len(tel[1:]) == 11:
                raise ValueError
        else:
            raise ValueError
    except Exception:
        return 'error'
    return tel
 
 
if __name__ == '__main__':
    print(correct_tel(input()))
2 программа
0
8 / 7 / 1
Регистрация: 07.01.2023
Сообщений: 13
22.09.2023, 11:17
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def check_tele(stra: str):
    try:
        stra = ''.join(stra.split())
        if stra[:2] == '+7' or stra[0] == '8':
            if not stra.split('-'):
                raise ValueError('неверный формат')
            if '--' in stra:
                raise ValueError('неверный формат')
            else:
                stra = stra.replace('-', '')
                st = stra.count('(')
                st1 = stra.count(')')
                if stra.find('(') > stra.find(')'):
                    raise ValueError('неверный формат')
                if st != st1 or (st > 1 and st1 > 1):
                    raise ValueError('неверный формат')
                stra = stra.replace('(', '')
                stra = stra.replace(')', '')
                if stra[0] == '8':
                    stra = '+7' + stra[1:]
                if not stra[1:].isdigit():
                    raise ValueError('неверный формат')
                if len(stra) != 12:
                    raise ValueError('неверное количество цифр')
        else:
            raise ValueError('неверный формат')
    except Exception as e:
        return str(e)
    return stra
 
 
print(check_tele(input()))
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
22.09.2023, 14:09
localhostj, а какой правильный формат-то?
0
1 / 1 / 0
Регистрация: 24.09.2021
Сообщений: 6
26.09.2023, 14:36
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
try:
    phone_number = input().replace(" ", "").replace("\t", "")
    if "(" in phone_number and ")" in phone_number:
        start_index = phone_number.index("(")
        end_index = phone_number.index(")")
        phone_number = phone_number[:start_index] + phone_number[start_index + 1:end_index] + phone_number[
                                                                                              end_index + 1:]
 
    if "--" not in phone_number and "-" in phone_number:
        phone_number = phone_number[0] + phone_number[1:-1].replace("-", "") + phone_number[-1]
 
    if phone_number.startswith("+7"):
        phone_number = "+7" + phone_number[2:]
    elif phone_number.startswith("8"):
        phone_number = "+7" + phone_number[1:]
    else:
        raise TypeError()
 
    if not phone_number[1:].isdigit():
        raise TypeError()
    if len(phone_number[1:]) != 11:
        raise ValueError()
    print(phone_number)
except ValueError:
    print("неверное количество цифр")
except TypeError:
    print("неверный формат")
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
27.09.2023, 21:35
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def check_tel(s):
    s = s.strip()
    s = ''.join(s.split())
    if s.startswith('+7'):
        s = s[2:]
    elif s.startswith('8'):
        s = s[1:]
    else:
        raise ValueError('Неправильный префикс номера.')
    if s.endswith('-') or '--' in s:
        raise ValueError('Некорректное употребление дефисов.')
    s = ''.join(s.split('-'))
    ss = ''.join(x for x in s if x in '()')
    if not ss in ['', '()']:
        raise ValueError('Некорректное употребление скобок.')
    s = s.replace('(', '')
    s = s.replace(')', '')
    if not s.isdigit():
        raise ValueError('Недопустимые символы в номере.')
    elif len(s) != 10:
        raise ValueError('Неверное количество цифр.')
    return '+7' + s
 
s = input('Введите номер телефона->')
try:
    print(check_tel(s))
except ValueError as e:
    print(e)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2023, 21:35
Помогаю со студенческими работами здесь

Создайте программу, которая печатает порядковые номера номера элементов массива
Дан одномерный массив B из n целых чисел. Создайте программу, которая печатает порядковые номера номера элементов массива на экране,...

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

Найдите сумму чисел из введённого набора от данного номера до данного номера
Например, если введены номера «2 4», то нужно найти сумму чисел в наборе со 2-го по 4-е. Формат ввода На первой строке вводится...

Извлечь номера телефонов из текстового файла
Доброго вечера. Ничего не шарю в программировании, есть исходный текст в форматах любых (txt/pdf/xlsx/word) Вид текста: ...

Сверить номера телефонов в разных форматах
Здравствуйте, помогите решить задачу (Питон 3.3): Телефонные номера в адресной книге мобильного телефона имеют один из следующих...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru