В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
Данька0007
Данька0007
20.05.2023 03:34 •  Информатика

Справка о междугороднем тел. разговоре содержит: номер телефона абонента(6 цифр),дату(год, месяц, число),время(час, минута), код города(3 цифры), номер телефона в другом городе(7 цифр), продолжительность разговора(в минутах),категорию(, обычный) и тариф(плата в рублях за минуту). вывести на экран номер телефона абонента код города и номер телефона в другом городе для телефонных разговоров, состоявшихся между 15 марта и 12 апреля 1996 года.

Показать ответ
Ответ:
KatyaSy
KatyaSy
08.10.2020 07:21
#!/usr/bin/python3

'''
пологаю, условие как есть: без пробелов, без OCR, без какого-либо форматирования

т.е. вводные строки текста выглядят так:



я добавил поддержку некоторых разделителей в выражение, на случай если они
всётаки имеются

тестовые данные:





тогда, решаем это с регулярных выражений

как видно, в условии не сказано, что считать за код города. предположим,
что код города - это первая цифра от num2
'''

import re
import datetime

R = re.compile(
    r'\s*(?P<num1>\d{6})\s*(?P<y>\d{4})\-?(?P<m>\d{2})\-?(?P<d>\d{2})\s*'
    r'(?P<num2>\d{7})\s*'
обычный))\s*(?P<price>\d+)\s*'
)

d1 = datetime.datetime(1996, 3, 15)
d2 = datetime.datetime(1996, 4, 12)

while True:
    a = ""
    try:
        a = input("введи> ")
    except EOFError:
        print("\n")
        exit(0)

    res = R.match(a)
    if res == None:
        print("ошибка парсинга")
        continue

    dd = datetime.datetime.now()
    try:
        dd = datetime.datetime(
            int(res.group("y")),
            int(res.group("m")),
            int(res.group("d"))
        )
    except ValueError:
        print("неправильная дата")

    if res.group("urgency") == " " and (dd > d1 and dd < d2):
        n = res.group("num2")
        print("номер1 {}, код {}, номер2 {}".format(
            res.group("num1"), n[0], n[1:]))
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота