diff --git a/dmedvedev/python/18.algo_tranf_date.ipynb b/dmedvedev/python/18.algo_tranf_date.ipynb new file mode 100644 index 0000000..d17be8c --- /dev/null +++ b/dmedvedev/python/18.algo_tranf_date.ipynb @@ -0,0 +1,227 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "815ff7f8", + "metadata": {}, + "source": [ + "Задача 1. Сумма оплаченных заказов\n", + "Дан список заказов:\n", + "\n", + "orders= [\n", + " {\"order_id\":1,\"amount\":1200,\"status\":\"paid\"},\n", + " {\"order_id\":2,\"amount\":500,\"status\":\"new\"},\n", + " {\"order_id\":3,\"amount\":800,\"status\":\"paid\"},\n", + " {\"order_id\":4,\"amount\":300,\"status\":\"cancelled\"}\n", + "]\n", + "Нужно:\n", + " пройтись по заказам;\n", + " взять только те, у которых статус \"paid\";\n", + " посчитать их общую сумму;\n", + " вывести результат." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "5dac0cd0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "orders= [\n", + " {\"order_id\":1,\"amount\":1200,\"status\":\"paid\"},\n", + " {\"order_id\":2,\"amount\":500,\"status\":\"new\"},\n", + " {\"order_id\":3,\"amount\":800,\"status\":\"paid\"},\n", + " {\"order_id\":4,\"amount\":300,\"status\":\"cancelled\"}\n", + "]\n", + "count = 0\n", + "for order in orders:\n", + " if order[\"status\"] == \"paid\":\n", + " count += 1\n", + "print(count)\n" + ] + }, + { + "cell_type": "markdown", + "id": "5909293c", + "metadata": {}, + "source": [ + "Задача 2. Поиск самого дорогого заказа\n", + "Дан список заказов:\n", + "\n", + "orders= [\n", + " {\"order_id\":1,\"amount\":1200},\n", + " {\"order_id\":2,\"amount\":500},\n", + " {\"order_id\":3,\"amount\":1800},\n", + " {\"order_id\":4,\"amount\":900}\n", + "]\n", + "Нужно:\n", + " найти заказ с максимальной суммой amount;\n", + " вывести весь словарь этого заказа." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "1cd30f37", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'order_id': 3, 'amount': 1800}\n" + ] + } + ], + "source": [ + "orders = [\n", + " {\"order_id\":1,\"amount\":1200},\n", + " {\"order_id\":2,\"amount\":500},\n", + " {\"order_id\":3,\"amount\":1800},\n", + " {\"order_id\":4,\"amount\":900}\n", + "]\n", + "max_order = orders[0]\n", + "for order in orders:\n", + " if order[\"amount\"] > max_order[\"amount\"]:\n", + " max_order = order\n", + "pprint(max_order, sort_dicts=False)" + ] + }, + { + "cell_type": "markdown", + "id": "c81986e6", + "metadata": {}, + "source": [ + "Задача 3. Группировка заказов по пользователю\n", + "Дан список заказов:\n", + "\n", + "orders= [\n", + " {\"order_id\":1,\"user_id\":101,\"amount\":1200},\n", + " {\"order_id\":2,\"user_id\":102,\"amount\":500},\n", + " {\"order_id\":3,\"user_id\":101,\"amount\":800},\n", + " {\"order_id\":4,\"user_id\":103,\"amount\":700}\n", + "]\n", + "Нужно:\n", + " сгруппировать заказы по user_id;\n", + " в результате получить словарь, где:\n", + " ключ — это user_id,\n", + " значение — список заказов этого пользователя." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "cd85b1b0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{101: [{'order_id': 1, 'user_id': 101, 'amount': 1200},\n", + " {'order_id': 3, 'user_id': 101, 'amount': 800}],\n", + " 102: [{'order_id': 2, 'user_id': 102, 'amount': 500}],\n", + " 103: [{'order_id': 4, 'user_id': 103, 'amount': 700}]}\n" + ] + } + ], + "source": [ + "orders= [\n", + " {\"order_id\":1,\"user_id\":101,\"amount\":1200},\n", + " {\"order_id\":2,\"user_id\":102,\"amount\":500},\n", + " {\"order_id\":3,\"user_id\":101,\"amount\":800},\n", + " {\"order_id\":4,\"user_id\":103,\"amount\":700}\n", + "]\n", + "grouped = {}\n", + "for order in orders:\n", + " user_id = order[\"user_id\"]\n", + " if user_id not in grouped:\n", + " grouped[user_id] = []\n", + " grouped[user_id].append(order)\n", + "pprint(grouped, sort_dicts=False)" + ] + }, + { + "cell_type": "markdown", + "id": "a0669a7b", + "metadata": {}, + "source": [ + "Задача 4. Подсчет выручки по пользователям\n", + "Дан список заказов:\n", + "\n", + "orders= [\n", + " {\"order_id\":1,\"user_id\":101,\"amount\":1200},\n", + " {\"order_id\":2,\"user_id\":102,\"amount\":500},\n", + " {\"order_id\":3,\"user_id\":101,\"amount\":800},\n", + " {\"order_id\":4,\"user_id\":103,\"amount\":700},\n", + " {\"order_id\":5,\"user_id\":102,\"amount\":300}\n", + "]\n", + "Нужно:\n", + " пройтись по заказам;\n", + " посчитать общую сумму amount по каждому user_id;\n", + " сохранить результат в словарь." + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "3f0a2d12", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{101: 2000, 102: 800, 103: 700}\n" + ] + } + ], + "source": [ + "orders= [\n", + " {\"order_id\":1,\"user_id\":101,\"amount\":1200},\n", + " {\"order_id\":2,\"user_id\":102,\"amount\":500},\n", + " {\"order_id\":3,\"user_id\":101,\"amount\":800},\n", + " {\"order_id\":4,\"user_id\":103,\"amount\":700},\n", + " {\"order_id\":5,\"user_id\":102,\"amount\":300}\n", + "]\n", + "user_total = {}\n", + "for order in orders:\n", + " user_id = order[\"user_id\"]\n", + " if user_id not in user_total:\n", + " user_total[user_id] = 0\n", + " user_total[user_id] += order[\"amount\"]\n", + "print(user_total)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}