Написание программы на Python цена договорная

Цена договорная
26 марта 2024, 18:58 • 23 отклика • 182 просмотра
Описание имеющихся данных:
Есть 4 текстовые таблицы .txt в кодировке UTF-8 с разделителем tab "Buyer_pup", "Список заказов", "current PUP" и "Заказы новые".
1) В первой таблице "Buyer_pup" есть четыре столбца “ID Buyer”, “Name Buyer”, “ID pick-up point”, “Name PUP” в первом столбце все значения числовые и уникальны, во третьем значения числовые, но они не уникальны. В этой таблице в первом столбце хранится информация по людям, так называемым Баерам, во третьем столбце хранится информация по здания, к которым эти люди прикреплены, к одному зданию могут быть прикреплены несколько людей. Эти люди совершают заказы каждый день, поэтому важно соблюдать некоторые правила, которые указаны в конце.
2) Во второй таблице "Список заказов" хранится информация по заказам людей и состоит таблица из семи столбцов “ID товара”, “Дата совершения заказа”, “Ключевик”, “ID Buyer”, “Name Buyer“, “ID pick-up point”, “Name PUP”. “ID Buyer” в числовом формате, “Дата совершения заказа” в формате "дд/мм/гггг" и “ID товара” в числовом формате, заказов может быть много. В каждой строчке хранится информация о том, какой конкретный баер, в какой конкретный день, какой конкретный товар купил, несколько баеров могут заказать один и тот же товар в один день.
3) В третьей таблице "current PUP" находятся два столбца “ID pick-up point”, “Name PUP", в первом столбце все значения числовые, в нём находятся уникальные значения всех домов, к которым прикреплены баеры.
4) В четвёртой таблице "Заказы новые" находятся три столбца “Дата совершения заказа” в формате "дд/мм/гггг", “Ключевик” - строковое значение и “ID товара” целочисленное значение. Здесь хранится информация о том, какие заказы на какой конкретный артикул в какой конкретный день должны быть совершены. Товары ранее могли покупаться баерами, то есть “ID товара” может быть таким, которое уже встречалось.

5) Также есть таблица эксель Book 1. Во вкладке “Sheet 1” есть четыре столбца “Name Buyer”, “ID товара”, “Ключевик” и “Дата совершения заказа”. Сюда должны будут вставляться программой данные о заказах, которые программа распределила.


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


INPUT:
Пользователь вводит одну дату, назовём date1, в формате "дд/мм/гггг".

OUTPUT:

Заполненная таблица Book 1 на дату date1, заполненная таблица "Список заказов" на дату date1, удаленные строки в таблице "Заказы новые", где “Дата совершения заказа” = date1


Что именно должна делать программа:



Программа берёт информацию по заказам из таблицы "Заказы новые", то есть берёт те строчки, в которых “Дата совершения заказа” = date1 и для каждого заказа определяет “Name Buyer” исходя из следующих приоритетов


  1. 2 одинаковых “ID товара” не могут быть заказаны одним и тем же баером, если есть баеры, которые не совершали заказ этого “ID товара” в период от date1 до дня который был за 21 день до date1
    в случае, если каждый баер уже заказал по разу нужный товар, то нужно направить новый заказ, тому баеру, на чей “ID pick-up point” данный “ID товара” не был ни разу заказан в период от date1 до дня который был за 5 дней до date1
    аналогично 2 одинаковых “ID товара” не могут быть заказаны одним и тем же баером в третий раз, если есть баеры, которые не совершали покупку этого “ID товара” в период от date1 до дня который был за 21 день до date1 и так далее…
  2. В день задания по заказам товаров должны распределяться в среднем на 100 уникальных “ID Buyer” , допустимые пределы от 80 до 120 баеров
  3. за каждые 7 календарных дней распределение по “ID pick-up point” должно быть равномерно с погрешностью не более чем 15% минимального от максимального значения
  4. за каждые 7 календарных дней распределение выкупов на “ID Buyer” должно быть равномерным с погрешностью не более 15% минимального значения от максимального

Первый приоритет должен исполняться в 100% случаев