228 lines
6.6 KiB
Plaintext
228 lines
6.6 KiB
Plaintext
{
|
|
"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
|
|
}
|