Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/222: Рейтинг темы: голосов - 222, средняя оценка - 4.91
3 / 2 / 0
Регистрация: 23.01.2016
Сообщений: 98

Сверить номера телефонов в разных форматах

23.01.2016, 16:25. Показов 44694. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите решить задачу (Питон 3.3):

Телефонные номера в адресной книге мобильного телефона имеют один из следующих форматов:

+7<код><номер>

8<код><номер>

<номер>

где <номер> — это семь цифр, а <код> — это три цифры или три цифры в круглых скобках. Если код не указан, то считается, что он равен 495. Кроме того, в записи телефонного номера может стоять знак “-” между любыми двумя цифрами.
На данный момент в адресной книге телефона Васи записано всего три телефонных номера, и он хочет записать туда еще один. Но он не может понять, не записан ли уже такой номер в телефонной книге. Помогите ему!
Два телефонных номера совпадают, если у них равны коды и равны номера. Например, +7(916)0123456 и 89160123456 — это один и тот же номер.

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

Выходные данные
Для каждого телефонного номера в адресной книге выведите YES (заглавными буквами), если он совпадает с тем телефонным номером, который Вася хочет добавить в адресную книгу или NO (заглавными буквами) в противном случае.

Пример

Ввод
8(495)430-23-97
+7-4-9-5-43-023-97
4-3-0-2-3-9-7
8-495-430

Вывод
YES
YES
NO

Помогите пожалуйста решить эту задачу, весь день пытался, но так ничего и не получилось
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2016, 16:25
Ответы с готовыми решениями:

Поиск чисел в разных форматах
Реализовать программу для поиска чисел в разных форматах

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

Значения с плавающей точкой в разных форматах
Помогите, пожалуйста, с написанием псевдокода для программы, печатающей значения с плавающей точкой в разных форматах (обычная десятичная и...

5
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
23.01.2016, 16:38
А как пытались уже решить?
1
3 / 2 / 0
Регистрация: 23.01.2016
Сообщений: 98
23.01.2016, 17:22  [ТС]
Сначала я сделал ввод каждой строки в отдельный "input()", каждую номер подгонял под формат <номер> и сравнивал с первой.
Но во первых - это решение очень громоздкое,
А во вторых - ввод всех четырёх номеров должен происходить в одной команде.

Добавлено через 33 минуты
Поможете?
0
51 / 51 / 18
Регистрация: 03.12.2015
Сообщений: 167
23.01.2016, 18:01
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
nums = ['89641231456', '+7(123)78-15-630', '+74560011'] # номера в книжке, можно любые сюда ввести.
# просто пример
your_num = input('Enter number: ')
nums.append(your_num)
print(nums) # это не нужно. Написал для наглядности
 
for i in range(len(nums)): # изменяем все номера, в том числе и введенный. приводим к одному виду
    nums[i] = nums[i].replace('-', '').replace('(', '').replace(')', '').replace('+7', '8')
    if len(nums[i]) < 11:
        nums[i] = nums[i][:1] + '495' + nums[i][1:]
 
print(nums) # это тоже для наглядности
 
your_num = nums.pop()
 
for num in nums:
    if num == your_num:
        print('YES')
    else:
        print('NO')
Добавлено через 3 минуты
Python
1
2
3
4
Enter number: 84954560011
NO
NO
YES
Добавлено через 2 минуты
Если все номера нужно вводить, то первые три строки заменить на
Python
1
nums = input('Enter numbers: ').split() #  вводить номера через пробел, нужный номер последним
1
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
23.01.2016, 18:07
Лучший ответ Сообщение было отмечено OnikS228 как решение

Решение

Python
1
2
3
4
5
6
7
8
def reformat(string):
    string = string.replace('-', '').replace('(', '').replace(')', '')
    return string[-10:] if len(string)>7 else '495' + string[-7:]
 
n = 4
notes = [input() for _ in range(n)]
for note in notes[1:]:
    print('YES' if reformat(notes[0]) == reformat(note) else 'NO')
1
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 4
25.01.2016, 21:46
Всем здравствуйте! Вот условие задачки:

 Комментарий модератора 
Правила п.4.1
Прежде чем задать вопрос, воспользуйтесь поиском - возможно, ответ на него уже был дан ранее.

Вопрос задавали всего 2 дня назад! Вы у одного препода учитесь?


Вот мой код(он очень мудреный,я начинающий программист,не знаю множество возможностей языка.Короче,делал в лоб:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
S = input()
S2 = input()
S3 = input()
S4 = input()
i = int(0)
 
#1
Sc = S.replace('-','').replace('(','').replace(')','')
S = Sc
 
if(len(S) == 7):
    S = S[:]
if(S[0]=='+'):
    S = S[2:]
if(S[0]=='8'):
    S = S[1:]
if(S[0:3]!='495'):
    S = '495' + S[:]
 
 
#2
Sc = S2.replace('-','').replace('(','').replace(')','')
S2 = Sc
 
if(len(S2) == 7):
    S2 = S2[:]
if(S2[0]=='+'):
    S2 = S2[2:]
if(S2[0]=='8'):
    S2 = S2[1:]
if(S2[0:3]!='495'):
    S2 = '495' + S2[:]
 
#3
    Sc = S3.replace('-','').replace('(','').replace(')','')
S3 = Sc
 
if(len(S3) == 7):
    S3 = S3[:]
if(S3[0]=='+'):
    S3 = S3[2:]
if(S3[0]=='8'):
    S3 = S3[1:]
if(S3[0:3]!='495'):
    S3 = '495' + S3[:]
 
#4
 
Sc = S4.replace('-','').replace('(','').replace(')','')
S4 = Sc
 
if(len(S4) == 7):
    S4 = S4[:]
if(S4[0]=='+'):
    S4 = S4[2:]
if(S4[0]=='8'):
    S4 = S4[1:]
if(S4[0:3]!='495'):
    S4 = '495' + S4[:]
 
 
if S == S2:
    print('YES')
else:
    print('NO')
if S == S3:
    print('YES')
else:
    print('NO')
if S == S4:
    print('YES')
else:
    print('NO')

Всего 11 тестов и не проходит только по одному из них,помогите разобраться ,в чем моя ошибка. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2016, 21:46
Помогаю со студенческими работами здесь

Обработка ввода даты в разных форматах
Необходимо реализовать обработку ввода даты в разных форматах на языке С++. Например, 01.09.2000 или 1 сентября 2000.

посмотреть содержимое файла в разных форматах
Что нужно ввести, чтоб посмотреть файл в текстовом, восмеричном и 16-рическом форматах? Заранее спасибо.

Про вывод числа в разных форматах
Добрый вечер. У меня такая задачка: Добавить 2 числа (10 и 16разрядных) и потом вывести результат в 2, 8, 10 и 16-чном виде. Я...

Вывести текущее время в разных форматах (в 12 и 24 часовом)
include 'WIN32AX.INC' .data ;сегмент данных szDisplayName DB &quot;Часы&quot;, 0 hWnd DD 0 hInst DD 0 ...

Урлы на сайте в разных форматах. Что делать?
Добрый день. Получил в работу сайт, а там оказалось, что все урлы в разных форматах. Частично на латинице, более новые ссылки на кириллице....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru