diff --git a/.gitignore b/.gitignore index d896446..16ce325 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,224 @@ -.idea -python/.ipynb_checkpoints +### Python template +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### JupyterNotebooks template +# gitignore template for Jupyter Notebooks +# website: http://jupyter.org/ + +*/.ipynb_checkpoints/* + +# IPython + +# Remove previous ipynb_checkpoints +# git rm -r .ipynb_checkpoints/ + diff --git a/python/2_task.ipynb b/python/2_task.ipynb index 34bc990..72f6594 100644 --- a/python/2_task.ipynb +++ b/python/2_task.ipynb @@ -8,7 +8,7 @@ "# Самостоятельная работа #2\n", "### Задание 1\n", "\n", - "Допишите функцию, которая принимает 2 числа, сравнивает между собой и возвращает наименьшее." + "Допишите функцию, которая принимает 2 числа, сравнивает между собой и возвращает наименьшее.\n" ] }, { @@ -18,7 +18,18 @@ "metadata": {}, "outputs": [], "source": [ - "# Начните писать код тут" + "def min_dual(first: float, second: float) -> float:\n", + " \"\"\"\n", + " Наименьшее из двух\n", + "\n", + " Args:\n", + " first (float): первое число\n", + " second (float): второе число\n", + "\n", + " Returns:\n", + " float: меньшее из двух данных\n", + " \"\"\"\n", + " # Начните писать код тут" ] }, { @@ -38,7 +49,19 @@ "metadata": {}, "outputs": [], "source": [ - "# Начните писать код тут" + "def min_triple(first: float, second: float, third: float) -> float:\n", + " \"\"\"\n", + " Наименьшее из трех\n", + "\n", + " Args:\n", + " first (float): первое число\n", + " second (float): второе число\n", + " third (float): третье число\n", + "\n", + " Returns:\n", + " float: наименьшее из трех данных\n", + " \"\"\"\n", + " # Начните писать код тут" ] }, { @@ -58,7 +81,22 @@ "metadata": {}, "outputs": [], "source": [ - "# Начните писать код тут" + "def eq_count(first: float, second: float, third: float) -> int:\n", + " \"\"\"\n", + " Количество совпадающих чисел. Соответственно, функция может возвращать одно из трех чисел:\n", + " 3 - если совпадают все,\n", + " 2 - если совпадают 2 числа,\n", + " 0 - если все числа различны.\n", + "\n", + " Args:\n", + " first (float): первое число\n", + " second (float): второе число\n", + " third (float): третье число\n", + "\n", + " Returns:\n", + " int: количество совпадающих чисел\n", + " \"\"\"\n", + " # Начните писать код тут" ] } ], @@ -83,4 +121,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/python/3_task.ipynb b/python/3_task.ipynb index 86b58fd..2a0061b 100644 --- a/python/3_task.ipynb +++ b/python/3_task.ipynb @@ -1,5 +1,19 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "import typing as ty" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "id": "657be689", @@ -10,7 +24,7 @@ "\n", "### Задание 1\n", "\n", - "Допишите функцию, которая принимает массив из 10 чисел и возвращает их сумму." + "Допишите функцию, которая принимает список из 10 чисел и возвращает их сумму." ] }, { @@ -20,7 +34,17 @@ "metadata": {}, "outputs": [], "source": [ - "# Начните писать код тут" + "def sum_dec(data: ty.List[float]) -> float:\n", + " \"\"\"\n", + " Сумма десяти чисел\n", + "\n", + " Args:\n", + " data: список из десяти чисел\n", + "\n", + " Returns:\n", + " float: сумма десяти чисел из списка data\n", + " \"\"\"\n", + " # Начните писать код тут" ] }, { @@ -31,7 +55,7 @@ "\n", "### Задание 2\n", "\n", - "Допишите функцию, которая принимает массив чисел и возвращает количество чисел равных нулю." + "Допишите функцию, которая принимает список чисел и возвращает количество чисел равных нулю." ] }, { @@ -41,6 +65,16 @@ "metadata": {}, "outputs": [], "source": [ + "def zero_count(data: ty.List[float]) -> int:\n", + " \"\"\"\n", + " Подсчет нулей в списке\n", + "\n", + " Args:\n", + " data: список чисел\n", + "\n", + " Returns:\n", + " int: количество нулей в списке\n", + " \"\"\"\n", "# Начните писать код тут" ] }, @@ -50,9 +84,10 @@ "metadata": {}, "source": [ "\n", - "### Задание 3\n", + "###\n", + "Задание 3\n", "\n", - "Напишите программу, в которой задается натуральное число n и выводится лестница из n ступенек, i-я ступенька должна состоять из чисел от 1 до i без пробелов." + "Напишите программу, в которой задается натуральное число n и выводится лестница из n ступенек, i-я ступенька должна состоять из чисел от 1 до i без пробелов." ] }, { @@ -129,4 +164,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/python/5_task.ipynb b/python/5_task.ipynb index a27ff0f..9a6d664 100644 --- a/python/5_task.ipynb +++ b/python/5_task.ipynb @@ -1,5 +1,19 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "import typing as ty" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "id": "85755de8", @@ -20,7 +34,15 @@ "metadata": {}, "outputs": [], "source": [ - "# Начните писать код тут" + "def even_idx(data: list) -> list:\n", + " \"\"\"\n", + " Args:\n", + " data: список элементов\n", + "\n", + " Returns:\n", + " list: список элементов с четными индексами\n", + " \"\"\"\n", + " # Начните писать код тут" ] }, { @@ -40,7 +62,15 @@ "metadata": {}, "outputs": [], "source": [ - "# Начните писать код тут" + "def increasing(data: ty.List[int]) -> ty.List[int]:\n", + " \"\"\"\n", + " Args:\n", + " data: список чисел\n", + "\n", + " Returns:\n", + " list: список элементов, которые больше предыдущего\n", + " \"\"\"\n", + " # Начните писать код тут" ] }, { @@ -60,7 +90,17 @@ "metadata": {}, "outputs": [], "source": [ - "# Начните писать код тут" + "def swap(data: ty.List[int]) -> ty.List[int]:\n", + " \"\"\"\n", + " Меняет местами наибольший и наименьший элементы\n", + "\n", + " Args:\n", + " data: список элементов\n", + "\n", + " Returns:\n", + " list: список элементов, наибольший и наименьший элементы поменяны местами\n", + " \"\"\"\n", + " # Начните писать код тут" ] } ], @@ -85,4 +125,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/python/6_task.ipynb b/python/6_task.ipynb index ee469be..54cc7ad 100644 --- a/python/6_task.ipynb +++ b/python/6_task.ipynb @@ -1,5 +1,21 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "import typing as ty\n", + "T = ty.TypeVar(\"T\")\n", + "U = ty.TypeVar(\"U\")" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "id": "49944faf", @@ -21,7 +37,17 @@ "metadata": {}, "outputs": [], "source": [ - "# Начните писать код тут" + "def get_by_key(data: ty.Dict[T, U], key: T) -> U:\n", + " \"\"\"\n", + "\n", + " Args:\n", + " data: словарь с данными\n", + " key: один из ключей словаря с данными\n", + "\n", + " Returns:\n", + " U: значение из словаря, соответствующее данному ключу\n", + " \"\"\"\n", + " # Начните писать код тут" ] } ], @@ -46,4 +72,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/python/7_task.ipynb b/python/7_task.ipynb index f0990ec..c5db52b 100644 --- a/python/7_task.ipynb +++ b/python/7_task.ipynb @@ -20,7 +20,17 @@ "metadata": {}, "outputs": [], "source": [ - "# Начните писать код тут" + "def diff(numbers: list) -> int:\n", + " \"\"\"\n", + " Количество различных чисел\n", + "\n", + " Args:\n", + " numbers: список чисел\n", + "\n", + " Returns:\n", + " int: количество различных чисел списка numbers\n", + " \"\"\"\n", + " # Начните писать код тут" ] }, { @@ -40,6 +50,16 @@ "metadata": {}, "outputs": [], "source": [ + "def intersection(first: list, second: list) -> int:\n", + " \"\"\"\n", + " Количество общих чисел\n", + " Args:\n", + " first: первый список\n", + " second: второй список\n", + "\n", + " Returns:\n", + " int: количество общих элементов данных списков\n", + " \"\"\"\n", "# Начните писать код тут" ] } @@ -65,4 +85,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/python/type_and_objects.ipynb b/python/type_and_objects.ipynb index ba3fe38..124e6ec 100644 --- a/python/type_and_objects.ipynb +++ b/python/type_and_objects.ipynb @@ -62,11 +62,11 @@ "source": [ "null_variable = None \n", "not_null_variable = 'something' \n", - "if null_variable == None: \n", + "if null_variable is None:\n", " print('null_variable is None') \n", "else: \n", " print('null_variable is not None') \n", - "if not_null_variable == None: \n", + "if not_null_variable is None:\n", " print('not_null_variable is None') \n", "else: \n", " print('not_null_variable is not None')" @@ -182,7 +182,7 @@ "\n", " \n", "## Генератор\n", - "Генератор списков используется, когда нам нужно вывести последовательность целых чисел. Более\n", + "Генератор используется, когда нам нужно создать, но не сохранять последовательность элементов. Более\n", "\n", "подробно об этом типе будет рассказано в уроке \"Циклы\".\n", "\n", @@ -243,4 +243,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file