сделано ДЗ "алгоритмы обратки данных"

This commit is contained in:
Dmitry Medvedev
2026-10-22 23:58:50 +05:00
parent 2f2f48d3bf
commit 0cef93ef3b
+227
View File
@@ -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
}