Code Monkey home page Code Monkey logo

ptm-3's Introduction

Технологии и методы программирования

Таблица с успеваемостью

Лабораторная 3 "Regular expressions"

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

Варианты выполнения лабораторной работы

В вариантах сдачи данной лабораторной предусмотрена некоторая гибкость:

  1. Решить собвственную задачу, связанную с написанием регулярных выражений и сделать pr c ее кодом в данный репозиторий (примерный вариант такой задачи продемонстрирован лектором в телеграм-чате предмета - с unicode emoji).
  2. Решить подготовленную для вас в данном репозитории задачу по регулярным выражениям, условие которой описано ниже.

Задание на лабораторную работу

  1. Сделать fork данного репозитория.
  2. Получить csv-файл в соответствии со своим вариантом.
  3. Произвести валидацию файла с использованием регулярных выражений.
  4. На основе номеров невалидных строк подсчитать контрольную сумму.

Условия сдачи

  • Корректность вашей контрольной суммы подтверждена github action,
  • В коде имеются 10 вменяемых регулярных выражений для валидации данных,
  • Ваш код оформлен в соотвествии с РЕР8, грамотно декомпозирован и не нуждается в рефакторинге.

Условие лабораторной

Исходные данные

Для каждого студента сгенерирован персональный csv-файл с данными. Свой вариант задания можно узнать в таблице с успеваемостью.

Файл содержит 10000 строк данных, сгенерированных при помощи mimesis. Данные имеют 10 столбцов различного формата. Среди данных имеются невалидные - по 100 записей на поле. Суммарно 1000 невалидных записей. Искажения в данные для каждого столбца имеют случайный характер. Такой объем данных должен, в идеале, отбить у вас любое желание провалидировать записи вручную.
Свой csv-файл можно скачать из этой папки на драйве.

По итогам обработки файла с данными вам необходимо вычислить контрольную сумму при помощи функции в модуле checksum.py, после чего заполнить result.json полученной контрольной суммой и номером своего варианта. Подбробное описание использования этого модуля дано в его докстрингах.

Проверка результатов

Корректность контрольной суммы проверяется при помощи github action. Правильные знечения достаются из секретов репозитория, среди них ищется значение для вашего варианта и сравнивается с вашим ответом.

Акшон запускается при открытии пул-риквеста, а также при добавлении каждого последующего коммита в пул-риквест. Если ваша контрольная сумма не совпала с верной, акшон покажет вам корректное значение. Так что вы сможете локально отладить свой код для валидации, добиться корректного значения и только потом коммитить в pr.

Описание данных

Под катом вы найдете описания всех возможных форматов данных в этой лабораторной работе с примерами и комментариями.

Типы используемых данных
Название поля Пример значения Комментарий
1 email [email protected], [email protected] Типичный имейл. Состоит из латинских букв, цифр, символов "." и "@".Обратите внимание, что адрес может иметь поддомен.
2 telephone +7-(969)-765-17-05 Номер телефона должен иметь строго заданный формат как в примере. Скобки, тире и +7 должны обязательно присутствовать.
3 http_status_message 200 OK, 226 IM Used Статус должен начинаться с трехзначного кода, отделенного пробелом от текстового описания.
4 height 1.76, 2.00 Высота имеет точку в качестве разделителя целой и дробной части и имеет точность в два знака после него. В задании подразумевается, что это рост человека. В задании подразумевается, что 10/20/30 и т.д. -метровых людей не существует.
5 snils 90534478510 СНИЛС состоит из 11 цифровых символов. В данном задании символы СНИЛСа они указаны подряд без пробелов/тире и т.д.
6 inn 733499833600 ИНН состоит из 12 цифровых символов. В данном задании символы ИНН они указаны подряд без пробелов/тире и т.д.
7 passport 27 17 117724 В данном задании пробелами разделены первые 2 и последние 2 цифры серии, а также серия и номер паспорта.
8 identifier 62-71/26 Это поле - некоторый абстрактный идентификатор. Он содержит только цифры, разделенные определенными спецсимволами в определенных местах.
9 ip_v4 19.121.223.58 IP-адрес указывается без маски подсети. Не забывайте, что он 32-битный.
10 occupation 'Web-программист', 'Слесарь-механик', 'Ассистент менеджера по продажам' Название профессии может иметь в своем составе как кириллические символы, так и латинские. А вот спецсимволы кроме дефиса там встречаться не должны.
11 longitude 92.264847, -63.65076 Это долгота в системе координат WGS84 (srid 4326). Обратите внимание на ограничения на значение, которые она имеет. Должна быть числовым значением без единиц измерения и прочей текстовой информации.
12 latitude -8.287791, 32.223374 Это широта в системе координат WGS84 (srid 4326). Обратите внимание на ограничения на значение, которые она имеет. Должна быть числовым значением без единиц измерения и прочей текстовой информации.
13 hex_color #d8346b Это представление веб-цвета в виде трех пар 16-ричных цифр. Наличие хештега перед ними обязательно.
14 blood_type AB+, O- Это группа крови в системе АВО с указанием резус-фактора. Обратите внимание, что отрицательный резус-фактор в исходных данных обозначен символом \u2212
15 isbn 018-1-50114-053-6 13-значный международный стандартный книжный номер
16 issn 1931-0891 8-значный международный стандартный сериальный номер
17 locale_code es-uy,xh Региональная настройка языка в формате MS-LCID.
18 uuid 3a7fb1ca-bdc6-4314-ad9a-6370f7a9657b Всемирно уникальный идентификатор в каноническом представлении
19 time 18:24:12.734883 Время определенного формата с указанием часов, минут и секунд с точностью до 6 знаков. Не забывайте, что в сутках 24 часа, а в минуте - 60 секунд.
20 date 2000-02-14 Дата определенного формата. Напомню, что у нас только 12 месяцев, в которых максимум 31 день.

Ремарки

Касательно реализации лабораторной работы:

  • Проведите предварительный анализ данных, что достались вам на валидацию, перед тем как бросаться писать код.
  • Не пишите 10 отдельных методов/функций для валидации каждого отдельного столбца данных. Генерализуйте обработку ячеек csv файла.
  • Не бомбите открытый pr коммитами. Отладьте код локально. На каждую неудачную отработку CI github шлет оповещение по почту. Вы загадите почту как себе, так и мне.

Если вы столкнулись с непреодолимыми трудностями в ходе выполнения лабораторной работы, вы можете задать вопрос в:

  • телеграм-чате предмета,
  • телеграм-чате вашего курса,
  • канале в дискорде.

ptm-3's People

Contributors

alxmcs avatar mishachuu avatar

Stargazers

Dimka avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.