diff --git a/dmedvedev/python/15.functions.ipynb b/dmedvedev/python/15.functions.ipynb new file mode 100644 index 0000000..52ad64e --- /dev/null +++ b/dmedvedev/python/15.functions.ipynb @@ -0,0 +1,210 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "3759f336", + "metadata": {}, + "source": [ + "Задача 1. Сообщение о запуске ETL\n", + "Нужно написать функцию show_etl_start, которая принимает имя джобы и выводит сообщение о ее запуске.\n", + "Что нужно сделать:\n", + " создать функцию show_etl_start(job_name);\n", + " внутри вывести строку:Запуск ETL: <имя ETL>;\n", + " вызвать функцию для:\n", + " \"orders_load\"\n", + " \"users_load\"\n", + "\n", + "Ожидаемый вывод:\n", + " Запуск ETL: orders_load\n", + " Запуск ETL: users_load" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ad2441e7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Запуск ETL: orders_load\n", + "Запуск ETL: users_load\n" + ] + } + ], + "source": [ + "def show_etl_start(job_name):\n", + " print(f\"Запуск ETL: {job_name}\")\n", + "\n", + "show_etl_start(\"orders_load\")\n", + "show_etl_start(\"users_load\")" + ] + }, + { + "cell_type": "markdown", + "id": "7f37ba98", + "metadata": {}, + "source": [ + "Задача 2. Нормализация имени таблицы\n", + "Нужно написать функцию normalize_table_name, которая принимает имя таблицы и возвращает его:\n", + " без пробелов по краям;\n", + " в нижнем регистре.\n", + "Что нужно сделать:\n", + " создать функцию normalize_table_name(table_name);\n", + " использовать strip() и lower();\n", + " сохранить результат в переменную;\n", + " вывести результат для значений:\n", + " \" Orders \"\n", + " \" USERS \"\n", + " \"Payments\"\n", + "Пример вызова функции:\n", + " result = normalize_table_name(\" Orders \")\n", + " print(result)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "e5777c5a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "orders\n", + "users\n", + "payments\n" + ] + } + ], + "source": [ + "def normalize_table_name(table_name):\n", + " return table_name.strip().lower()\n", + "\n", + "result_orders = normalize_table_name(\" Orders \")\n", + "result_users = normalize_table_name(\" USERS \")\n", + "result_payments = normalize_table_name(\"Payments\")\n", + "\n", + "print(result_orders)\n", + "print(result_users)\n", + "print(result_payments)" + ] + }, + { + "cell_type": "markdown", + "id": "efa9fae5", + "metadata": {}, + "source": [ + "Задача 3. Проверка корректной суммы\n", + "Нужно написать функцию is_valid_amount, которая принимает сумму и возвращает:\n", + " True, если сумма больше 0;\n", + " False, если сумма меньше или равна 0.\n", + "Что нужно сделать:\n", + " создать функцию is_valid_amount(amount);\n", + " проверить значения:\n", + " 100\n", + " 0\n", + " -25" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "09665391", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "False\n", + "False\n" + ] + } + ], + "source": [ + "def is_valid_amount(amount):\n", + " return amount > 0\n", + "\n", + "print(is_valid_amount(100))\n", + "print(is_valid_amount(0))\n", + "print(is_valid_amount(-25))" + ] + }, + { + "cell_type": "markdown", + "id": "d99423c2", + "metadata": {}, + "source": [ + "Задача 4. Построение имени витрины\n", + "Нужно написать функцию build_mart_name, которая принимает:\n", + " название сущности;\n", + " слой.\n", + "И возвращает строку в формате:\n", + " _\n", + "Что нужно сделать:\n", + " создать функцию build_mart_name(entity_name, layer);\n", + " проверить на примерах:\n", + " (\"orders\", \"dm\")\n", + " (\"users\", \"core\")\n", + " (\"payments\", \"stg\")" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "d3c6683e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_\n", + "_\n", + "_\n" + ] + } + ], + "source": [ + "def build_mart_name(entity_name, layer):\n", + " return entity_name, layer\n", + "\n", + "mart_name, lay = build_mart_name(\"orders\", \"dm\")\n", + "mart_name2, lay2 = build_mart_name(\"users\", \"core\")\n", + "mart_name3, lay3 = build_mart_name(\"payments\", \"stg\")\n", + "\n", + "\n", + "print(f\"<{lay}>_<{mart_name}>\")\n", + "print(f\"<{lay2}>_<{mart_name2}>\")\n", + "print(f\"<{lay3}>_<{mart_name3}>\")\n", + "\n" + ] + } + ], + "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 +}