From 95fb41551fc011abbba2cc47eb8623faa2053d7a Mon Sep 17 00:00:00 2001 From: Gleb Date: Sun, 28 Apr 2024 23:30:23 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=9A=D0=A0=D0=9E?= =?UTF-8?q?=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/format.json | 38 ++++++++++++++++++++++++++++++++++++++ main/solution.py | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 main/format.json create mode 100644 main/solution.py diff --git a/main/format.json b/main/format.json new file mode 100644 index 0000000..94aad31 --- /dev/null +++ b/main/format.json @@ -0,0 +1,38 @@ +[ + { + "user_id": "3acfb0b7-04bd-4978-be4c-3929372277c1", + "ordered_at": "2023-01-16T13:56:39.492", + "status": "COMPLETED", + "total": "1917.00" + }, + { + "user_id": "25b003b9-ab22-4a24-a616-dd0303f983d8", + "ordered_at": "2023-03-05T08:34:21.123", + "status": "COMPLETED", + "total": "13990.00" + }, + { + "user_id": "e1470ada-fcbb-4424-8c46-065b6409ca4b", + "ordered_at": "2016-03-16T13:56:39.492", + "status": "COMPLETED", + "total": "215.50" + }, + { + "user_id": "081a47a5-b7bf-462c-a11a-68002a179152", + "ordered_at": "2023-12-08T21:36:59.281", + "status": "COMPLETED", + "total": "49499.00" + }, + { + "user_id": "0999c6aa-1bac-4ded-9a54-92fff4f34d69", + "ordered_at": "2023-12-14T11:10:29.408", + "status": "CANCELED", + "total": "13650.00" + }, + { + "user_id": "0999c6aa-1bac-4ded-9a54-92fff4f34d69", + "ordered_at": "2023-12-14T11:15:31.108", + "status": "COMPLETED", + "total": "14760.00" + } +] \ No newline at end of file diff --git a/main/solution.py b/main/solution.py new file mode 100644 index 0000000..9b8918e --- /dev/null +++ b/main/solution.py @@ -0,0 +1,39 @@ +# импорт нужных библиотек +import json +from collections import defaultdict + +month_ab = { + '01':'january', '02':'february', '03':'march', '04':'april', '05':'may', '06':'june', + '07':'july', '08':'august', '09':'september', '10':'october','11':'november','12':'december' + } + +# главная ф-ция, в которую передаются инпут +def report(input_file: json) -> json: + # открываем файл и загружаем данные в переменную data + with open(input_file, 'r') as file: + data = json.load(file) + + # создаем словарь, где будут храниться общие затраты пользователей по месяцам + user_expenses = defaultdict(int) + + # цикл по записям и суммирование трат по месяцем, при условии что status == 'COMPLETED' + for record in data: + if record['status'] == 'COMPLETED': + month = month_ab.get(record['ordered_at'].split('-')[1].lower()) + user_expenses[month] += float(record['total']) + + # находим максимальное значение суммы трат среди всех месяцев + max_expenses = max(user_expenses.values()) + result = {"months": [month for month, expenses in user_expenses.items() if expenses == max_expenses]} + return json.dumps(result) + +# чтение файла .json +if __name__ == '__main__': + result = report('format.json') + print(result) + +# Я не совсем понял условие задания +# "Если максимальная сумма пользовательских трат была в более, чем одном месяце, отчет должен показывать все такие месяцы." +# Написал вам письмо, а вы молчите ((( + + \ No newline at end of file From e1c6dfab7874df77dc5be2fb52d1d381b0b19c11 Mon Sep 17 00:00:00 2001 From: Gleb Date: Sun, 28 Apr 2024 23:32:05 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=9A=D0=A0=D0=9E?= =?UTF-8?q?=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes README.md | 20 +++++++++++++++++ main/format.json | 38 -------------------------------- main/solution.py => solution.py | 0 4 files changed, 20 insertions(+), 38 deletions(-) create mode 100644 .DS_Store delete mode 100644 main/format.json rename main/solution.py => solution.py (100%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8270594b88605486aa933f2cc6b3c267792551e4 GIT binary patch literal 6148 zcmeHKyG{c!5S)b+L1|LbAo&YU;t!7KQc%!9LrFq}1UhmENI`dh#3#b+14P1=2qCm9 zd1qtq*uIfsdjZI7vpNQ*0LE;JqQQV^_u$Z8B<~Z&=2+kv74GnaZeXIn*rj`);D-Bs z#67<5e|_3^*UPqBGDGFLWLvz2F+RXK<~TuvGh#*dYKQU4tjY%iWTBQ$X;(Ww$8hB%%5CGzUP-qGohC_W@s{wQ9=R_FZ1(jm2D`cxnl z*j7MmU)ogf|2h9MgGIijq)P=-f&Z$2jGBvP#;=RJ_1kyqU0c|$*wi$y*MP=&>k+^o hdX600ppO@gnO6t)jyj9>8=aUB0TU!$D)0*myaVySH|78U literal 0 HcmV?d00001 diff --git a/README.md b/README.md index ee9d69b..30f6829 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,27 @@ 4. Найденный в соответствии с условием задачи месяц должен выводиться на английском языке в нижнем регистре. Если месяцев несколько, то на вывод они все подаются на английском языке в нижнем регистре в порядке их следования в течение года. ## Автор решения +Латыпов Глеб Маратович +latypov.gm@mail.ru ## Описание реализации +Данный скрипт Python предназначен для анализа данных пользовательских трат и выдачи отчета о месяце(ах), в котором(ых) были зафиксированы наибольшие суммы трат. + +1. Сначала импортирются необходимые библиотеки + - 'json' для работы с данными в формате JSON. + - defaultdict из модуля collections для хранения и обработки пользовательских расходов по месяцам. +2. Определяется словарь month_ab, который сопоставляет числовые значения месяцев с их названиями на английском языке. +3. Определяется главная функция "report(input_file)", которая принимает на вход JSON с и возвращает JSON. +4. В блоке if __name__ == __main__ происходит чтение файла 'format.json' и вызов функции report. ## Инструкция по сборке и запуску решения +1. Убедитесь что у вас установлен Python версии 3.11 и выше +2. Все файлы должны лежать в одном каталоге +3. Подготовьте файл с данными в формате JSON. Назовите его 'format.json' или укажите соответствующее имя в блоке: + if __name__ == '__main__': + result = report('ваш_файл.json') +4. Запуск + - Откройте командную строку (терминал). + - Перейдите в каталог, где расположены файлы + - Запустите программу, выполнив команду > python3 solution.py +5. Вы великолепны :) \ No newline at end of file diff --git a/main/format.json b/main/format.json deleted file mode 100644 index 94aad31..0000000 --- a/main/format.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "user_id": "3acfb0b7-04bd-4978-be4c-3929372277c1", - "ordered_at": "2023-01-16T13:56:39.492", - "status": "COMPLETED", - "total": "1917.00" - }, - { - "user_id": "25b003b9-ab22-4a24-a616-dd0303f983d8", - "ordered_at": "2023-03-05T08:34:21.123", - "status": "COMPLETED", - "total": "13990.00" - }, - { - "user_id": "e1470ada-fcbb-4424-8c46-065b6409ca4b", - "ordered_at": "2016-03-16T13:56:39.492", - "status": "COMPLETED", - "total": "215.50" - }, - { - "user_id": "081a47a5-b7bf-462c-a11a-68002a179152", - "ordered_at": "2023-12-08T21:36:59.281", - "status": "COMPLETED", - "total": "49499.00" - }, - { - "user_id": "0999c6aa-1bac-4ded-9a54-92fff4f34d69", - "ordered_at": "2023-12-14T11:10:29.408", - "status": "CANCELED", - "total": "13650.00" - }, - { - "user_id": "0999c6aa-1bac-4ded-9a54-92fff4f34d69", - "ordered_at": "2023-12-14T11:15:31.108", - "status": "COMPLETED", - "total": "14760.00" - } -] \ No newline at end of file diff --git a/main/solution.py b/solution.py similarity index 100% rename from main/solution.py rename to solution.py From a5a655f42ad87244c0451da85f98cda1c9ccf835 Mon Sep 17 00:00:00 2001 From: Gleb L <144946955+ostpanther@users.noreply.github.com> Date: Sun, 28 Apr 2024 23:32:32 +0300 Subject: [PATCH 3/3] Delete .DS_Store --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 8270594b88605486aa933f2cc6b3c267792551e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyG{c!5S)b+L1|LbAo&YU;t!7KQc%!9LrFq}1UhmENI`dh#3#b+14P1=2qCm9 zd1qtq*uIfsdjZI7vpNQ*0LE;JqQQV^_u$Z8B<~Z&=2+kv74GnaZeXIn*rj`);D-Bs z#67<5e|_3^*UPqBGDGFLWLvz2F+RXK<~TuvGh#*dYKQU4tjY%iWTBQ$X;(Ww$8hB%%5CGzUP-qGohC_W@s{wQ9=R_FZ1(jm2D`cxnl z*j7MmU)ogf|2h9MgGIijq)P=-f&Z$2jGBvP#;=RJ_1kyqU0c|$*wi$y*MP=&>k+^o hdX600ppO@gnO6t)jyj9>8=aUB0TU!$D)0*myaVySH|78U