{"id":19318488,"url":"https://github.com/andreypomortsev/yndx-python-handbook","last_synced_at":"2025-04-22T17:31:07.635Z","repository":{"id":249122800,"uuid":"830565067","full_name":"andreypomortsev/yndx-python-handbook","owner":"andreypomortsev","description":"100% test-covered solutions for the Yandex Python Basics tasks with configured CI","archived":false,"fork":false,"pushed_at":"2025-01-28T11:54:21.000Z","size":6194,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T02:05:33.062Z","etag":null,"topics":["algorithms","ci","coverage","discrete-mathematics","flake8","github-actions","math","numpy","pandas","poetry","pytest","python-tutorial","python3","requests"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andreypomortsev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-18T14:10:28.000Z","updated_at":"2025-01-28T11:54:19.000Z","dependencies_parsed_at":"2024-09-14T23:34:51.010Z","dependency_job_id":"126bb312-b546-4f80-a16d-d2cf4a0e5755","html_url":"https://github.com/andreypomortsev/yndx-python-handbook","commit_stats":null,"previous_names":["andreypomortsev/yndx-python-handbook"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreypomortsev%2Fyndx-python-handbook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreypomortsev%2Fyndx-python-handbook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreypomortsev%2Fyndx-python-handbook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreypomortsev%2Fyndx-python-handbook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreypomortsev","download_url":"https://codeload.github.com/andreypomortsev/yndx-python-handbook/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250287473,"owners_count":21405617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","ci","coverage","discrete-mathematics","flake8","github-actions","math","numpy","pandas","poetry","pytest","python-tutorial","python3","requests"],"created_at":"2024-11-10T01:18:46.159Z","updated_at":"2025-04-22T17:31:05.395Z","avatar_url":"https://github.com/andreypomortsev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Codacy grade (branch)](https://img.shields.io/codacy/grade/63f71a9c86ce4a0492af52c23628b78a/main)\n![Build Status](https://github.com/andreypomortsev/yndx-python-handbook/actions/workflows/ci.yml/badge.svg)\n[![codecov](https://codecov.io/gh/andreypomortsev/yndx-python-handbook/branch/main/graph/badge.svg?token=WPUYVICKGT)](https://codecov.io/gh/andreypomortsev/yndx-python-handbook)\n![Python 3.11](https://img.shields.io/badge/Python-3.11-orange.svg)\n![Python 3.12](https://img.shields.io/badge/Python-3.12-yellow.svg)\n![Python 3.13](https://img.shields.io/badge/Python-3.13-green.svg)\n![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)\n\n## Решения задач из учебника [Основы Python](https://education.yandex.ru/handbook/python) от Яндекс\n\n_\"Хендбук по Python поможет овладеть основным синтаксисом и принципами языка. Для этого не потребуется специальной подготовки — достаточно знаний по информатике, логике и математике на уровне школьной программы. Кроме основных конструкций в учебнике рассмотрены разные подходы к программированию, реализованные на Python.\"_ **Яндекс**\n\n### Описание Проекта\n\nРешения написаны мной, но некоторые тестовые данные могут быть позаимствованы из [одноименного](https://t.me/handbook_python) телеграм канала. При решении задач я придерживаюсь последовательности, в которой излагается материал в учебнике. Это значит, что, например, до модуля 4 я не использую функции, а до модуля 3 — списки/множества/словари. Такой подход помогает лучше понять материал и принципы работы со структурами данных.\n\nКроме того, я добавил тесты для всех своих решений. Эти тесты не полностью совпадают с теми, что приведены в учебнике, но вы можете запустить их с вашим кодом, чтобы проверить, на каких данных ваш код не работает или какие строки остались непроверенными.\n\n### Предварительные требования\n\n- **Python**: Убедитесь, что у вас установлена версия Python 3.11 или выше. Скачать можно по ссылкам:\n  - [**Python 3.11**](https://www.python.org/downloads/release/python-31110/)\n  - [**Python 3.12**](https://www.python.org/downloads/release/python-3127/)\n  - [**Python 3.13**](https://www.python.org/downloads/release/python-3130/)\n\n- **Git**: Потребуется для клонирования репозитория. [Скачать Git](https://git-scm.com/downloads).\n\n## Установка\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003eИнструкция по установке и запуску команд для начинающих\u003c/h3\u003e\u003c/summary\u003e\n\n### Шаги установки (без использования venv)\n\n1. **Клонируйте репозиторий**:\n   ```bash\n   git clone https://github.com/andreypomortsev/yndx-python-handbook\n   cd yndx-python-handbook\n   ```\n\n2. **Установите зависимости**:\n   Установите все необходимые пакеты из файла `requirements.txt`:\n\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n#### Форматирование кода по PEP8\n\nДля форматирования кода с использованием `black` и сортировка импортов `isort`:\n```bash\nblack . --line-length=79\nisort .\n```\n\n#### Запуск всех тестов\n\nЗапустите все тесты из директории `tests`:\n```bash\npytest\n```\n\n#### Запуск всех тестов в режиме отладки\n\nЧтобы увидеть расширенные логи во время тестов:\n```bash\npytest -vv\n```\n\n#### Запуск тестов для конкретного параграфа\n\nЧтобы запустить тесты только для задач в определенной папке (например, `2.1`), используйте:\n```bash\npytest tests/2.1\n```\n\n#### Запуск тестов для конкретной задачи\n\nДля тестирования отдельной задачи (например, задачи `Q` из папки `2.3`):\n```bash\npytest tests/2.3/test_23_q.py\n```\n\n#### Создание отчета о покрытии тестами в формате HTML\n\nЧтобы сгенерировать HTML-отчет по покрытию:\n```bash\npytest --cov-report html\n```\n\nПосле выполнения этой команды отчет будет доступен в `htmlcov/index.html`.\n\n#### Создание отчета о покрытии тестами в формате XML\n\nДля генерации отчета в формате XML:\n```bash\npytest --cov-report xml\n```\n\n#### Запуск линтера flake8\n\nЧтобы проверить код на ошибки стиля и потенциальные проблемы:\n```bash\nflake8 .\n```\n\n---\n\n##### Примечание\nЭти команды позволяют вручную выполнять все основные задачи по тестированию и форматированию кода в проекте.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003eИнструкция по установке и запуску команд с Poetry\u003c/h3\u003e\u003c/summary\u003e\n\n### Установка Poetry\n\n- **Windows**:\n\n  ```powershell\n  (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -\n  ```\n\n- **Unix-like OS (Linux/macOS)**:\n\n  ```sh\n  curl -sSL https://install.python-poetry.org | python3 -\n  ```\n\n#### Проверка успешной установки Poetry\n\n```sh\npoetry --version\n```\n\n### Шаги установки c poetry\n\n1. **Клонируйте репозиторий**:\n   ```bash\n   git clone https://github.com/andreypomortsev/yndx-python-handbook\n   cd yndx-python-handbook\n   ```\n\n2. **Установите зависимости и создайтк виртуальное окружение**:\n   - **Windows**:\n\n  ```powershell\n  pip install poetry -q\n  poetry install\n  poetry shell\n  ```\n\n  - **Unix-like OS (Linux/macOS)**:\n\n    ```sh\n    make setup\n    ```\n\n#### Форматирование кода (PEP8)\n\n- **Windows**:\n\n  ```powershell\n  poetry run black . --line-length=79\n  poetry run isort .\n  ```\n\n- **Unix-like OS (Linux/macOS)**:\n\n  ```sh\n  make format\n  ```\n\n#### Запуск тестов\n\n- **Все тесты в репозитории**:\n\n  - **Windows**:\n\n    ```powershell\n    poetry run pytest\n    ```\n\n  - **Unix-like OS (Linux/macOS)**:\n\n    ```sh\n    make test\n    ```\n\n- **Тесты в дебаг-режиме**:\n\n  - **Windows**:\n\n    ```powershell\n    poetry run pytest -vv\n    ```\n\n  - **Unix-like OS (Linux/macOS)**:\n\n    ```sh\n    make debug\n    ```\n\n- **Запуск тестов для отдельного параграфа (например, 2.1)**:\n\n  - **Windows**:\n\n    ```powershell\n    poetry run pytest tests\\2.1\n    ```\n\n  - **Unix-like OS (Linux/macOS)**:\n\n    ```sh\n    make test-dir-2.1\n    ```\n\n- **Запуск теста для одной задачи (например, тест задачи Q в параграфе 2.3)**:\n\n  - **Windows**:\n\n    ```powershell\n    poetry run pytest tests\\2.3\\test_23_q.py\n    ```\n\n  - **Unix-like OS (Linux/macOS)**:\n\n    ```sh\n    make test-file-2.3-Q\n    ```\n\n#### Генерация отчётов покрытия тестами\n\n- **HTML Отчёт**:\n\n  - **Windows**:\n\n    ```powershell\n    poetry run pytest --cov-report=html\n    ```\n\n  - **Unix-like OS (Linux/macOS)**:\n\n    ```sh\n    make test-report-html\n    ```\n\n  После выполнения откройте файл `htmlcov/index.html` для просмотра отчёта.\n\n- **XML Отчёт**:\n\n  - **Windows**:\n\n    ```powershell\n    poetry run pytest --cov-report=xml\n    ```\n\n  - **Unix-like OS (Linux/macOS)**:\n\n    ```sh\n    make test-report-xml\n    ```\n\n#### Линтинг с flake8\n\n- **Windows**:\n\n  ```powershell\n  poetry run flake8 .\n  ```\n\n- **Unix-like OS (Linux/macOS)**:\n\n  ```sh\n  make lint\n  ```\n\n#### Форматирование кода с black и isort\n\n- **Windows**:\n\n  ```powershell\n  poetry run black . --line-length=79\n  poetry run isort .\n  ```\n\n- **Unix-like OS (Linux/macOS)**:\n\n  ```sh\n  make format\n  ```\n\n#### Удаление лишних файлов\n\n- **Windows**:\n\n  ```powershell\n  find . -name '*.pyc' -delete\n  find . -name '__pycache__' -delete\n  find ../. -name '.coverage' -delete\n  ```\n\n- **Unix-like OS (Linux/macOS)**:\n\n  ```sh\n  make clean\n  ```\n\n---\n\n##### Примечания\n\n- Для пользователей **Windows**: все команды выполняются через `poetry run`, чтобы обеспечить совместимость с системой.\n- Для пользователей **Unix-like OS**: можно использовать как `make` для упрощения команд, так и команды для **Windows**.\n\n\u003c/details\u003e\n\nВо время теста в папке `tests` временно создаются файлы `wrapped_*.py`.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch4\u003eПочему создаются временные файлы?\u003c/h4\u003e\u003c/summary\u003e\n\nЧтобы отслеживать, насколько тесты покрывают код, обычно импортируют тестируемую функцию, и инструмент `coverage` показывает, какие строки были выполнены, а какие нет. Однако в первых трех параграфах учебника, где еще не введены функции, решения представлены просто как последовательность команд без определения функции. \n\nВ таких случаях мы можем протестировать код напрямую из файла, но не получим данных о покрытии строк. Чтобы обойти это ограничение, я написал функцию `wrap_answer` ([см. здесь](./tests/conftest.py)). Эта функция запускается при старте тестов и принимает параметры: путь к тестируемому файлу и имя файла. Она читает код задачи из файла, оборачивает его в функцию `main`, и сохраняет результат в файл `wrapped_(адрес папки)_(буква задачи).py`. Затем уже этот новый файл тестируется, и `coverage` фиксирует, какие строки были выполнены. Благодаря этому становится возможным отслеживать покрытие строк даже для кода, написанного без функций.\n\nКроме того, оборачивание кода в функцию `main` нужно для измерения потребляемой памяти и времени выполнения кода. Функция `wrap_answer` добавляет к обертке декораторы `@time_limit` и `@memory_limit`, которые устанавливают ограничения на время исполнения и объем памяти, выделяемой для задачи. Эти ограничения задаются константами `TIME_LIMIT` и `MEMORY_LIMIT` и контролируются в тестах.\n\n**Пример:**\n\n_Решение задачи Q из параграфа 2.2_\nФайл `22_q.py` до:\n\n```python\na = float(input())\nb = float(input())\nc = float(input())\n\nif not a:\n    if not b and not c:  # a == b == c == 0\n        print(\"Infinite solutions\")\n    elif not b and c:  # a == b == 0 and c != 0\n        print(\"No solution\")\n    else:  # a == 0 and b != 0 линейное уравнение\n        print(round(-c / b, 2))\nelse:\n    discriminant = b**2 - 4 * a * c\n    if discriminant \u003e= 0:\n        root_one = round((-b + discriminant**0.5) / (2 * a), 2)\n        root_two = round((-b - discriminant**0.5) / (2 * a), 2)\n        if not discriminant:\n            print(root_two)\n        elif root_one \u003c root_two:  # Условие выполняется при a \u003c 0\n            print(root_one, root_two)\n        else:\n            print(root_two, root_one)\n    else:  # Дискриминант меньше 0\n        print(\"No solution\")\n```\n\nФайл `wrapped_22_q.py` после применения `wrap_answer` к `22_q.py`:\n\n```python\nfrom tests.utils import time_limit, memory_limit\nfrom tests.constants import TIME_LIMIT, MEMORY_LIMIT\n\n\n@time_limit(TIME_LIMIT)\n@memory_limit(MEMORY_LIMIT)\ndef main():\n    a = float(input())\n    b = float(input())\n    c = float(input())\n\n    if not a:\n        if not b and not c:  # a == b == c == 0\n            print(\"Infinite solutions\")\n        elif not b and c:  # a == b == 0 and c != 0\n            print(\"No solution\")\n        else:  # a == 0 and b != 0 линейное уравнение\n            print(round(-c / b, 2))\n    else:\n        discriminant = b**2 - 4 * a * c\n        if discriminant \u003e= 0:\n            root_one = round((-b + discriminant**0.5) / (2 * a), 2)\n            root_two = round((-b - discriminant**0.5) / (2 * a), 2)\n            if not discriminant:\n                print(root_two)\n            elif root_one \u003c root_two:  # Условие выполняется при a \u003c 0\n                print(root_one, root_two)\n            else:\n                print(root_two, root_one)\n        else:  # Дискриминант меньше 0\n            print(\"No solution\")\n```\n\nПосле того как отчет по покрытию готов, файлы удаляются.\n\n\u003c/details\u003e\n\n### Проверка Вашего кода\n\nПосле клонирования репозитория выполните следующие шаги:\n\n- Найдите код, который вам нужно проверить, и замените его на ваше решение.\n  - Например у вас проблема с задачей [2.1 C](./solutions/2.1/c.py) заходите в файл вставляете свое решение, сохраняете и запускаете тесты.\n- Сохраните изменения и запустите тесты.\n- Проверьте покрытие кода тестами. Это покажет, сколько строк вашего кода было выполнено во время тестов. Если покрытие меньше 100%, это может указывать на то, что некоторые строки кода не нужны или не были протестированы.\n- Если тесты не прошли, названия неудачных тестов будут выделены красным цветом. Перейдите в папку с тестами, откройте соответствующий файл и проверьте входные данные.\n- Исправьте код в соответствии с выявленными проблемами, снова запустите тесты и повторяйте процесс до тех пор, пока все тесты не пройдут успешно.\n\nКроме правильного ответа Яндекс проверяет еще и на соответствие кода [PEP8](https://github.com/Searge/mipt_oop/blob/master/week_1/readme.md), поэтому научитесь пользоваться линтерами: [flake8](https://flake8.pycqa.org/en/latest/) или [pylint](https://pypi.org/project/pylint/) и форматером кода, я использую [black](https://black.readthedocs.io/en/stable/index.html).\n\n## Решения | Тесты\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\u003ch3\u003e2.1 Ввод и вывод данных. Операции с числами, строками. Форматирование\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Ввод и вывод данных. Операции с числами, строками. Форматирование](https://education.yandex.ru/handbook/python/article/vvod-i-vyvod-dannykh-operatsii-s-chislami-strokami-formatirovaniye)\n  \n### [Тестовые данные для задач](./tests/data/test_data_21.py)\n  \n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Привет, Яндекс!](./solutions/2.1/21_a.py) | [✅](./tests/2.1/test_21_a.py) |\n| B. [Привет, всем!](./solutions/2.1/21_b.py) | [✅](./tests/2.1/test_21_b.py) |\n| C. [Излишняя автоматизация](./solutions/2.1/21_c.py) | [✅](./tests/2.1/test_21_c.py) |\n| D. [Сдача](./solutions/2.1/21_d.py) | [✅](./tests/2.1/test_21_d.py) |\n| E. [Магазин](./solutions/2.1/21_e.py) | [✅](./tests/2.1/test_21_e.py) |\n| F. [Чек](./solutions/2.1/21_f.py) | [✅](./tests/2.1/test_21_f.py) |\n| G. [Делу — время, потехе — час](./solutions/2.1/21_g.py) | [✅](./tests/2.1/test_21_g.py) |\n| H. [Наказание](./solutions/2.1/21_h.py) | [✅](./tests/2.1/test_21_h.py) |\n| I. [Деловая колбаса](./solutions/2.1/21_i.py) | [✅](./tests/2.1/test_21_i.py) |\n| J. [Детский сад — штаны на лямках](./solutions/2.1/21_j.py) | [✅](./tests/2.1/test_21_j.py) |\n| K. [Автоматизация игры](./solutions/2.1/21_k.py) | [✅](./tests/2.1/test_21_k.py) |\n| L. [Интересное сложение](./solutions/2.1/21_l.py) | [✅](./tests/2.1/test_21_l.py) |\n| M. [Дед Мороз и конфеты](./solutions/2.1/21_m.py) | [✅](./tests/2.1/test_21_m.py) |\n| N. [Шарики и ручки](./solutions/2.1/21_n.py) | [✅](./tests/2.1/test_21_n.py) |\n| O. [В ожидании доставки](./solutions/2.1/21_o.py) | [✅](./tests/2.1/test_21_o.py) |\n| P. [Доставка](./solutions/2.1/21_p.py) | [✅](./tests/2.1/test_21_p.py) |\n| Q. [Ошибка кассового аппарата](./solutions/2.1/21_q.py) | [✅](./tests/2.1/test_21_q.py) |\n| R. [Сдача 10](./solutions/2.1/21_r.py) | [✅](./tests/2.1/test_21_r.py) |\n| S. [Украшение чека](./solutions/2.1/21_s.py) | [✅](./tests/2.1/test_21_s.py) |\n| T. [Мухи отдельно, котлеты отдельно](./solutions/2.1/21_t.py) | [✅](./tests/2.1/test_21_t.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e2.2 Условный оператор\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Условный оператор](https://education.yandex.ru/handbook/python/article/uslovnyy-operator)\n\n### [Тестовые данные для задач](./tests/data/test_data_22.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Просто здравствуй, просто как дела](./solutions/2.2/22_a.py) | [✅](./tests/2.2/test_22_a.py) |\n| B. [Кто быстрее?](./solutions/2.2/22_b.py) | [✅](./tests/2.2/test_22_b.py) |\n| C. [Кто быстрее на этот раз?](./solutions/2.2/22_c.py) | [✅](./tests/2.2/test_22_c.py) |\n| D. [Список победителей](./solutions/2.2/22_d.py) | [✅](./tests/2.2/test_22_d.py) |\n| E. [Яблоки](./solutions/2.2/22_e.py) | [✅](./tests/2.2/test_22_e.py) |\n| F. [Сила прокрастинации](./solutions/2.2/22_f.py) | [✅](./tests/2.2/test_22_f.py) |\n| G. [А роза упала на лапу Азора](./solutions/2.2/22_g.py) | [✅](./tests/2.2/test_22_g.py) |\n| H. [Зайка — 1](./solutions/2.2/22_h.py) | [✅](./tests/2.2/test_22_h.py) |\n| I. [Первому игроку приготовиться](./solutions/2.2/22_i.py) | [✅](./tests/2.2/test_22_i.py) |\n| J. [Лучшая защита — шифрование](./solutions/2.2/22_j.py) | [✅](./tests/2.2/test_22_j.py) |\n| K. [Красота спасёт мир](./solutions/2.2/22_k.py) | [✅](./tests/2.2/test_22_k.py) |\n| L. [Музыкальный инструмент](./solutions/2.2/22_l.py) | [✅](./tests/2.2/test_22_l.py) |\n| M. [Властелин Чисел: Братство общей цифры](./solutions/2.2/22_m.py) | [✅](./tests/2.2/test_22_m.py) |\n| N. [Властелин Чисел: Две Башни](./solutions/2.2/22_n.py) | [✅](./tests/2.2/test_22_n.py) |\n| O. [Властелин Чисел: Возвращение Цезаря](./solutions/2.2/22_o.py) | [✅](./tests/2.2/test_22_o.py) |\n| P. [Легенды велогонок возвращаются: кто быстрее?](./solutions/2.2/22_p.py) | [✅](./tests/2.2/test_22_p.py) |\n| Q. [Корень зла](./solutions/2.2/22_q.py) | [✅](./tests/2.2/test_22_q.py) |\n| R. [Территория зла](./solutions/2.2/22_r.py) | [✅](./tests/2.2/test_22_r.py) |\n| S. [Автоматизация безопасности](./solutions/2.2/22_s.py) | [✅](./tests/2.2/test_22_s.py) |\n| T. [Зайка — 2](./solutions/2.2/22_t.py) | [✅](./tests/2.2/test_22_t.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e2.3 Циклы\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Циклы](https://education.yandex.ru/handbook/python/article/cikly)\n\n### [Тестовые данные для задач](./tests/data/test_data_23.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Раз, два, три! Ёлочка, гори!](./solutions/2.3/23_a.py) | [✅](./tests/2.3/test_23_a.py) |\n| B. [Зайка — 3](./solutions/2.3/23_b.py) | [✅](./tests/2.3/test_23_b.py) |\n| C. [Считалочка](./solutions/2.3/23_c.py) | [✅](./tests/2.3/test_23_c.py) |\n| D. [Считалочка 2.0](./solutions/2.3/23_d.py) | [✅](./tests/2.3/test_23_d.py) |\n| E. [Внимание! Акция!](./solutions/2.3/23_e.py) | [✅](./tests/2.3/test_23_e.py) |\n| F. [НОД](./solutions/2.3/23_f.py) | [✅](./tests/2.3/test_23_f.py) |\n| G. [НОК](./solutions/2.3/23_g.py) | [✅](./tests/2.3/test_23_g.py) |\n| H. [Излишняя автоматизация 2.0](./solutions/2.3/23_h.py) | [✅](./tests/2.3/test_23_h.py) |\n| I. [Факториал](./solutions/2.3/23_i.py) | [✅](./tests/2.3/test_23_i.py) |\n| J. [Маршрут построен](./solutions/2.3/23_j.py) | [✅](./tests/2.3/test_23_j.py) |\n| K. [Цифровая сумма](./solutions/2.3/23_k.py) | [✅](./tests/2.3/test_23_k.py) |\n| L. [Сильная цифра](./solutions/2.3/23_l.py) | [✅](./tests/2.3/test_23_l.py) |\n| M. [Первому игроку приготовиться 2.0](./solutions/2.3/23_m.py) | [✅](./tests/2.3/test_23_m.py) |\n| N. [Простая задача](./solutions/2.3/23_n.py) | [✅](./tests/2.3/test_23_n.py) |\n| O. [Зайка - 4](./solutions/2.3/23_o.py) | [✅](./tests/2.3/test_23_o.py) |\n| P. [А роза упала на лапу Азора 2.0](./solutions/2.3/23_p.py) | [✅](./tests/2.3/test_23_p.py) |\n| Q. [Чётная чистота](./solutions/2.3/23_q.py) | [✅](./tests/2.3/test_23_q.py) |\n| R. [Простая задача 2.0](./solutions/2.3/23_r.py) | [✅](./tests/2.3/test_23_r.py) |\n| S. [Игра в «Угадайку»](./solutions/2.3/23_s.py) | [✅](./tests/2.3/test_23_s.py) |\n| T. [Хайпанём немножечко!](./solutions/2.3/23_t.py) | [✅](./tests/2.3/test_23_t.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e2.4 Вложенные циклы\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Вложенные циклы](https://education.yandex.ru/handbook/python/article/vlozhennye-cikly)\n\n### [Тестовые данные для задач](./tests/data/test_data_24.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Таблица умножения](./solutions/2.4/24_a.py) | [✅](./tests/2.4/test_24_a.py) |\n| B. [Не таблица умножения](./solutions/2.4/24_b.py) | [✅](./tests/2.4/test_24_b.py) |\n| C. [Новогоднее настроение](./solutions/2.4/24_c.py) | [✅](./tests/2.4/test_24_c.py) |\n| D. [Суммарная сумма](./solutions/2.4/24_d.py) | [✅](./tests/2.4/test_24_d.py) |\n| E. [Зайка — 5](./solutions/2.4/24_e.py) | [✅](./tests/2.4/test_24_e.py) |\n| F. [НОД 2.0](./solutions/2.4/24_f.py) | [✅](./tests/2.4/test_24_f.py) |\n| G. [На старт! Внимание! Марш!](./solutions/2.4/24_g.py) | [✅](./tests/2.4/test_24_g.py) |\n| H. [Максимальная сумма](./solutions/2.4/24_h.py) | [✅](./tests/2.4/test_24_h.py) |\n| I. [Большое число](./solutions/2.4/24_i.py) | [✅](./tests/2.4/test_24_i.py) |\n| J. [Мы делили апельсин](./solutions/2.4/24_j.py) | [✅](./tests/2.4/test_24_j.py) |\n| K. [Простая задача 3.0](./solutions/2.4/24_k.py) | [✅](./tests/2.4/test_24_k.py) |\n| L. [Числовой прямоугольник](./solutions/2.4/24_l.py) | [✅](./tests/2.4/test_24_l.py) |\n| M. [Числовой прямоугольник 2.0](./solutions/2.4/24_m.py) | [✅](./tests/2.4/test_24_m.py) |\n| N. [Числовая змейка](./solutions/2.4/24_n.py) | [✅](./tests/2.4/test_24_n.py) |\n| O. [Числовая змейка 2.0](./solutions/2.4/24_o.py) | [✅](./tests/2.4/test_24_o.py) |\n| P. [Редизайн таблицы умножения](./solutions/2.4/24_p.py) | [✅](./tests/2.4/test_24_p.py) |\n| Q. [А роза упала на лапу Азора 3.0](./solutions/2.4/24_q.py) | [✅](./tests/2.4/test_24_q.py) |\n| R. [Новогоднее настроение 2.0](./solutions/2.4/24_r.py) | [✅](./tests/2.4/test_24_r.py) |\n| S. [Числовой квадрат](./solutions/2.4/24_s.py) | [✅](./tests/2.4/test_24_s.py) |\n| T. [Математическая выгода](./solutions/2.4/24_t.py) | [✅](./tests/2.4/test_24_t.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e3.1 Строки, кортежи, списки\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Строки, кортежи, списки](https://education.yandex.ru/handbook/python/article/stroki-kortezhi-spiski)\n\n### [Тестовые данные для задач](./tests/data/test_data_31.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Азбука](./solutions/3.1/31_a.py) | [✅](./tests/3.1/test_31_a.py) |\n| B. [Кручу-верчу](./solutions/3.1/31_b.py) | [✅](./tests/3.1/test_31_b.py) |\n| C. [Анонс новости](./solutions/3.1/31_c.py) | [✅](./tests/3.1/test_31_c.py) |\n| D. [Очистка данных](./solutions/3.1/31_d.py) | [✅](./tests/3.1/test_31_d.py) |\n| E. [А роза упала на лапу Азора 4.0](./solutions/3.1/31_e.py) | [✅](./tests/3.1/test_31_e.py) |\n| F. [Зайка — 6](./solutions/3.1/31_f.py) | [✅](./tests/3.1/test_31_f.py) |\n| G. [А и Б сидели на трубе](./solutions/3.1/31_g.py) | [✅](./tests/3.1/test_31_g.py) |\n| H. [Зайка — 7](./solutions/3.1/31_h.py) | [✅](./tests/3.1/test_31_h.py) |\n| I. [Без комментариев](./solutions/3.1/31_i.py) | [✅](./tests/3.1/test_31_i.py) |\n| J. [Частотный анализ на минималках](./solutions/3.1/31_j.py) | [✅](./tests/3.1/test_31_j.py) |\n| K. [Найдётся всё](./solutions/3.1/31_k.py) | [✅](./tests/3.1/test_31_k.py) |\n| L. [Меню питания](./solutions/3.1/31_l.py) | [✅](./tests/3.1/test_31_l.py) |\n| M. [Массовое возведение в степень](./solutions/3.1/31_m.py) | [✅](./tests/3.1/test_31_m.py) |\n| N. [Массовое возведение в степень 3.0](./solutions/3.1/31_n.py) | [✅](./tests/3.1/test_31_n.py) |\n| O. [НОД 3.0](./solutions/3.1/31_o.py) | [✅](./tests/3.1/test_31_o.py) |\n| P. [Анонс новости 3.0](./solutions/3.1/31_p.py) | [✅](./tests/3.1/test_31_p.py) |\n| Q. [А роза упала на лапу Азора 5.0](./solutions/3.1/31_q.py) | [✅](./tests/3.1/test_31_q.py) |\n| R. [RLE](./solutions/3.1/31_r.py) | [✅](./tests/3.1/test_31_r.py) |\n| S. [Польский калькулятор](./solutions/3.1/31_s.py) | [✅](./tests/3.1/test_31_s.py) |\n| T. [Польский калькулятор — 3](./solutions/3.1/31_t.py) | [✅](./tests/3.1/test_31_t.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e3.2 Множества, словари\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Множества, словари](https://education.yandex.ru/handbook/python/article/mnozhestva-slovari)\n\n### [Тестовые данные для задач](./tests/data/test_data_32.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Символическая выжимка](./solutions/3.2/32_a.py) | [✅](./tests/3.2/test_32_a.py) |\n| B. [Символическая разница](./solutions/3.2/32_b.py) | [✅](./tests/3.2/test_32_b.py) |\n| C. [Зайка — 8](./solutions/3.2/32_c.py) | [✅](./tests/3.2/test_32_c.py) |\n| D. [Кашееды](./solutions/3.2/32_d.py) | [✅](./tests/3.2/test_32_d.py) |\n| E. [Кашееды — 2](./solutions/3.2/32_e.py) | [✅](./tests/3.2/test_32_e.py) |\n| F. [Кашееды — 3](./solutions/3.2/32_f.py) | [✅](./tests/3.2/test_32_f.py) |\n| G. [Азбука Морзе](./solutions/3.2/32_g.py) | [✅](./tests/3.2/test_32_g.py) |\n| H. [Кашееды — 4](./solutions/3.2/32_h.py) | [✅](./tests/3.2/test_32_h.py) |\n| I. [Зайка — 9](./solutions/3.2/32_i.py) | [✅](./tests/3.2/test_32_i.py) |\n| J. [Транслитерация](./solutions/3.2/32_j.py) | [✅](./tests/3.2/test_32_j.py) |\n| K. [Однофамильцы](./solutions/3.2/32_k.py) | [✅](./tests/3.2/test_32_k.py) |\n| L. [Однофамильцы — 2](./solutions/3.2/32_l.py) | [✅](./tests/3.2/test_32_l.py) |\n| M. [Дайте чего-нибудь новенького!](./solutions/3.2/32_m.py) | [✅](./tests/3.2/test_32_m.py) |\n| N. [Это будет шедевр!](./solutions/3.2/32_n.py) | [✅](./tests/3.2/test_32_n.py) |\n| O. [Двоичная статистика!](./solutions/3.2/32_o.py) | [✅](./tests/3.2/test_32_o.py) |\n| P. [Зайка — 10](./solutions/3.2/32_p.py) | [✅](./tests/3.2/test_32_p.py) |\n| Q. [Друзья друзей](./solutions/3.2/32_q.py) | [✅](./tests/3.2/test_32_q.py) |\n| R. [Карта сокровищ](./solutions/3.2/32_r.py) | [✅](./tests/3.2/test_32_r.py) |\n| S. [Частная собственность](./solutions/3.2/32_s.py) | [✅](./tests/3.2/test_32_s.py) |\n| T. [Простая задача 4.0](./solutions/3.2/32_t.py) | [✅](./tests/3.2/test_32_t.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e3.3 Списочные выражения. Модель памяти для типов языка Python\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Списочные выражения. Модель памяти для типов языка Python](https://education.yandex.ru/handbook/python/article/spisochnye-vyrazheniya-model-pamyati-dlya-tipov-yazyka-python)\n\n### [Тестовые данные для задач](./tests/data/test_data_33.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Список квадратов](./solutions/3.3/33_a.py) | [✅](./tests/3.3/test_33_a.py) |\n| B. [Таблица умножения 2.0](./solutions/3.3/33_b.py) | [✅](./tests/3.3/test_33_b.py) |\n| C. [Длины всех слов](./solutions/3.3/33_c.py) | [✅](./tests/3.3/test_33_c.py) |\n| D. [Множество нечетных чисел](./solutions/3.3/33_d.py) | [✅](./tests/3.3/test_33_d.py) |\n| E. [Множество всех полных квадратов](./solutions/3.3/33_e.py) | [✅](./tests/3.3/test_33_e.py) |\n| F. [Буквенная статистика](./solutions/3.3/33_f.py) | [✅](./tests/3.3/test_33_f.py) |\n| G. [Делители](./solutions/3.3/33_g.py) | [✅](./tests/3.3/test_33_g.py) |\n| H. [Аббревиатура](./solutions/3.3/33_h.py) | [✅](./tests/3.3/test_33_h.py) |\n| I. [Преобразование в строку](./solutions/3.3/33_i.py) | [✅](./tests/3.3/test_33_i.py) |\n| J. [RLE наоборот](./solutions/3.3/33_j.py) | [✅](./tests/3.3/test_33_j.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e3.4 Встроенные возможности по работе с коллекциями\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Встроенные возможности по работе с коллекциями](https://education.yandex.ru/handbook/python/article/vstroennye-vozmozhnosti-po-rabote-s-kollekciyami)\n\n### [Тестовые данные для задач](./tests/data/test_data_34.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Автоматизация списка](./solutions/3.4/34_a.py) | [✅](./tests/3.4/test_34_a.py) |\n| B. [Сборы на прогулку](./solutions/3.4/34_b.py) | [✅](./tests/3.4/test_34_b.py) |\n| C. [Рациональная считалочка](./solutions/3.4/34_c.py) | [✅](./tests/3.4/test_34_c.py) |\n| D. [Словарная ёлка](./solutions/3.4/34_d.py) | [✅](./tests/3.4/test_34_d.py) |\n| E. [Список покупок](./solutions/3.4/34_e.py) | [✅](./tests/3.4/test_34_e.py) |\n| F. [Колода карт](./solutions/3.4/34_f.py) | [✅](./tests/3.4/test_34_f.py) |\n| G. [Игровая сетка](./solutions/3.4/34_g.py) | [✅](./tests/3.4/test_34_g.py) |\n| H. [Меню питания 2.0](./solutions/3.4/34_h.py) | [✅](./tests/3.4/test_34_h.py) |\n| I. [Таблица умножения 3.0](./solutions/3.4/34_i.py) | [✅](./tests/3.4/test_34_i.py) |\n| J. [Мы делили апельсин 2.0](./solutions/3.4/34_j.py) | [✅](./tests/3.4/test_34_j.py) |\n| K. [Числовой прямоугольник 3.0](./solutions/3.4/34_k.py) | [✅](./tests/3.4/test_34_k.py) |\n| L. [Список покупок 2.0](./solutions/3.4/34_l.py) | [✅](./tests/3.4/test_34_l.py) |\n| M. [Расстановка спортсменов](./solutions/3.4/34_m.py) | [✅](./tests/3.4/test_34_m.py) |\n| N. [Спортивные гадания](./solutions/3.4/34_n.py) | [✅](./tests/3.4/test_34_n.py) |\n| O. [Список покупок 3.0](./solutions/3.4/34_o.py) | [✅](./tests/3.4/test_34_o.py) |\n| P. [Расклад таков...](./solutions/3.4/34_p.py) | [✅](./tests/3.4/test_34_p.py) |\n| Q. [А есть ещё варианты?](./solutions/3.4/34_q.py) | [✅](./tests/3.4/test_34_q.py) |\n| R. [Таблица истинности](./solutions/3.4/34_r.py) | [✅](./tests/3.4/test_34_r.py) |\n| S. [Таблица истинности 2](./solutions/3.4/34_s.py) | [✅](./tests/3.4/test_34_s.py) |\n| T. [Таблица истинности 3](./solutions/3.4/34_t.py) | [✅](./tests/3.4/test_34_t.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e3.5 Потоковый ввод/вывод. Работа с текстовыми файлами. JSON\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Потоковый ввод/вывод. Работа с текстовыми файлами. JSON](https://education.yandex.ru/handbook/python/article/potokovyj-vvodvyvod-rabota-s-tekstovymi-fajlami-json)\n\n### [Тестовые данные для задач](./tests/data/test_data_35.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [A+B+...](./solutions/3.5/35_a.py) | [✅](./tests/3.5/test_35_a.py) |\n| B. [Средний рост](./solutions/3.5/35_b.py) | [✅](./tests/3.5/test_35_b.py) |\n| C. [Без комментариев 2.0](./solutions/3.5/35_c.py) | [✅](./tests/3.5/test_35_c.py) |\n| D. [Найдётся всё 2.0](./solutions/3.5/35_d.py) | [✅](./tests/3.5/test_35_d.py) |\n| E. [А роза упала на лапу Азора 6.0](./solutions/3.5/35_e.py) | [✅](./tests/3.5/test_35_e.py) |\n| F. [Транслитерация 2.0](./solutions/3.5/35_f.py) | [✅](./tests/3.5/test_35_f.py) |\n| G. [Файловая статистика](./solutions/3.5/35_g.py) | [✅](./tests/3.5/test_35_g.py) |\n| H. [Файловая разница](./solutions/3.5/35_h.py) | [✅](./tests/3.5/test_35_h.py) |\n| I. [Файловая чистка](./solutions/3.5/35_i.py) | [✅](./tests/3.5/test_35_i.py) |\n| J. [Хвост](./solutions/3.5/35_j.py) | [✅](./tests/3.5/test_35_j.py) |\n| K. [Файловая статистика 2.0](./solutions/3.5/35_k.py) | [✅](./tests/3.5/test_35_k.py) |\n| L. [Разделяй и властвуй](./solutions/3.5/35_l.py) | [✅](./tests/3.5/test_35_l.py) |\n| M. [Обновление данных](./solutions/3.5/35_m.py) | [✅](./tests/3.5/test_35_m.py) |\n| N. [Слияние данных](./solutions/3.5/35_n.py) | [✅](./tests/3.5/test_35_n.py) |\n| O. [Поставь себя на моё место](./solutions/3.5/35_o.py) | [✅](./tests/3.5/test_35_o.py) |\n| P. [Найдётся всё 3.0](./solutions/3.5/35_p.py) | [✅](./tests/3.5/test_35_p.py) |\n| Q. [Прятки](./solutions/3.5/35_q.py) | [✅](./tests/3.5/test_35_q.py) |\n| R. [Сколько вешать в байтах?](./solutions/3.5/35_r.py) | [✅](./tests/3.5/test_35_r.py) |\n| S. [Это будет наш секрет](./solutions/3.5/35_s.py) | [✅](./tests/3.5/test_35_s.py) |\n| T. [Файловая сумма](./solutions/3.5/35_t.py) | [✅](./tests/3.5/test_35_t.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e4.1 Функции. Области видимости. Передача параметров в функции\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Функции. Области видимости. Передача параметров в функции](https://education.yandex.ru/handbook/python/article/funkcii-oblasti-vidimosti-peredacha-parametrov-v-funkcii)\n\n### [Тестовые данные для задач](./tests/data/test_data_41.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Функциональное приветствие](./solutions/4.1/41_a.py) | [✅](./tests/4.1/test_41_a.py) |\n| B. [Функциональный НОД](./solutions/4.1/41_b.py) | [✅](./tests/4.1/test_41_b.py) |\n| C. [Длина числа](./solutions/4.1/41_c.py) | [✅](./tests/4.1/test_41_c.py) |\n| D. [Имя of the month](./solutions/4.1/41_d.py) | [✅](./tests/4.1/test_41_d.py) |\n| E. [Числовая строка](./solutions/4.1/41_e.py) | [✅](./tests/4.1/test_41_e.py) |\n| F. [Модернизация системы вывода](./solutions/4.1/41_f.py) | [✅](./tests/4.1/test_41_f.py) |\n| G. [Шахматный «обед»](./solutions/4.1/41_g.py) | [✅](./tests/4.1/test_41_g.py) |\n| H. [А роза упала на лапу Азора 7.0](./solutions/4.1/41_h.py) | [✅](./tests/4.1/test_41_h.py) |\n| I. [Простая задача 5.0](./solutions/4.1/41_i.py) | [✅](./tests/4.1/test_41_i.py) |\n| J. [Слияние](./solutions/4.1/41_j.py) | [✅](./tests/4.1/test_41_j.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e4.2 Позиционные и именованные аргументы. Функции высших порядков...\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Позиционные и именованные аргументы. Функции высших порядков. Лямбда-функции](https://education.yandex.ru/handbook/python/article/pozicionnye-i-imenovannye-argumenty-funkcii-vysshih-poryadkov-lyambda-funkcii)\n\n### [Тестовые данные для задач](./tests/data/test_data_42.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Генератор списков](./solutions/4.2/42_a.py) | [✅](./tests/4.2/test_42_a.py) |\n| B. [Генератор матриц](./solutions/4.2/42_b.py) | [✅](./tests/4.2/test_42_b.py) |\n| C. [Функциональный нод 2.0](./solutions/4.2/42_c.py) | [✅](./tests/4.2/test_42_c.py) |\n| D. [Имя of the month 2.0](./solutions/4.2/42_d.py) | [✅](./tests/4.2/test_42_d.py) |\n| E. [Подготовка данных](./solutions/4.2/42_e.py) | [✅](./tests/4.2/test_42_e.py) |\n| F. [Кофейня](./solutions/4.2/42_f.py) | [✅](./tests/4.2/test_42_f.py) |\n| G. [В эфире рубрика «Эксперименты»](./solutions/4.2/42_g.py) | [✅](./tests/4.2/test_42_g.py) |\n| H. [Длинная сортировка](./solutions/4.2/42_h.py) | [✅](./tests/4.2/test_42_h.py) |\n| I. [Чётная фильтрация](./solutions/4.2/42_i.py) | [✅](./tests/4.2/test_42_i.py) |\n| J. [Ключевой секрет](./solutions/4.2/42_j.py) | [✅](./tests/4.2/test_42_j.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e4.3. Рекурсия. Декораторы. Генераторы\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Рекурсия. Декораторы. Генераторы](https://education.yandex.ru/handbook/python/article/rekursiya-dekoratory-generatory)\n\n### [Тестовые данные для задач](./tests/data/test_data_43.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Рекурсивный сумматор](./solutions/4.3/43_a.py) | [✅](./tests/4.3/test_43_a.py) |\n| B. [Рекурсивный сумматор цифр](./solutions/4.3/43_b.py) | [✅](./tests/4.3/test_43_b.py) |\n| C. [Многочлен N-ой степени](./solutions/4.3/43_c.py) | [✅](./tests/4.3/test_43_c.py) |\n| D. [Декор результата](./solutions/4.3/43_d.py) | [✅](./tests/4.3/test_43_d.py) |\n| E. [Накопление результата](./solutions/4.3/43_e.py) | [✅](./tests/4.3/test_43_e.py) |\n| F. [Сортировка слиянием](./solutions/4.3/43_f.py) | [✅](./tests/4.3/test_43_f.py) |\n| G. [Однотипность не порок](./solutions/4.3/43_g.py) | [✅](./tests/4.3/test_43_g.py) |\n| H. [Генератор Фибоначчи](./solutions/4.3/43_h.py) | [✅](./tests/4.3/test_43_h.py) |\n| I. [Циклический генератор](./solutions/4.3/43_i.py) | [✅](./tests/4.3/test_43_i.py) |\n| J. [\"Выпрямление\" списка](./solutions/4.3/43_j.py) | [✅](./tests/4.3/test_43_j.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e5.1 Объектная модель Python. Классы, поля и методы\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Объектная модель Python. Классы, поля и методы](https://education.yandex.ru/handbook/python/article/obuektnaya-model-python-klassy-polya-i-metody)\n\n### [Тестовые данные для задач](./tests/data/test_data_51.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Классная точка](./solutions/5.1/51_a.py) | [✅](./tests/5.1/test_51_a.py) |\n| B. [Классная точка 2.0](./solutions/5.1/51_b.py) | [✅](./tests/5.1/test_51_b.py) |\n| C. [Не нажимай красную кнопку!](./solutions/5.1/51_c.py) | [✅](./tests/5.1/test_51_c.py) |\n| D. [Работа не волк](./solutions/5.1/51_d.py) | [✅](./tests/5.1/test_51_d.py) |\n| E. [Классный прямоугольник](./solutions/5.1/51_e.py) | [✅](./tests/5.1/test_51_e.py) |\n| F. [Классный прямоугольник 2.0](./solutions/5.1/51_f.py) | [✅](./tests/5.1/test_51_f.py) |\n| G. [Классный прямоугольник 3.0](./solutions/5.1/51_g.py) | [✅](./tests/5.1/test_51_g.py) |\n| H. [Шашки](./solutions/5.1/51_h.py) | [✅](./tests/5.1/test_51_h.py) |\n| I. [Очередь](./solutions/5.1/51_i.py) | [✅](./tests/5.1/test_51_i.py) |\n| J. [Стэк](./solutions/5.1/51_j.py) | [✅](./tests/5.1/test_51_j.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e5.2 Волшебные методы, переопределение методов. Наследование\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Волшебные методы, переопределение методов. Наследование](https://education.yandex.ru/handbook/python/article/volshebnye-metody-pereopredelenie-metodov-nasledovanie)\n\n### [Тестовые данные для задач](./tests/data/test_data_52.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Классная точка 3.0](./solutions/5.2/52_a.py) | [✅](./tests/5.2/test_52_a.py) |\n| B. [Классная точка 4.0](./solutions/5.2/52_b.py) | [✅](./tests/5.2/test_52_b.py) |\n| C. [Классная точка 5.0](./solutions/5.2/52_c.py) | [✅](./tests/5.2/test_52_c.py) |\n| D. [Дроби v0.1](./solutions/5.2/52_d.py) | [✅](./tests/5.2/test_52_d.py) |\n| E. [Дроби v0.2](./solutions/5.2/52_e.py) | [✅](./tests/5.2/test_52_e.py) |\n| F. [Дроби v0.3](./solutions/5.2/52_f.py) | [✅](./tests/5.2/test_52_f.py) |\n| G. [Дроби v0.4](./solutions/5.2/52_g.py) | [✅](./tests/5.2/test_52_g.py) |\n| H. [Дроби v0.5](./solutions/5.2/52_h.py) | [✅](./tests/5.2/test_52_h.py) |\n| I. [Дроби v0.6](./solutions/5.2/52_i.py) | [✅](./tests/5.2/test_52_i.py) |\n| J. [Дроби v0.7](./solutions/5.2/52_j.py) | [✅](./tests/5.2/test_52_j.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e5.3 Модель исключений Python. Try, except, else, finally.\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Модель исключений Python. Try, except, else, finally. Модули](https://education.yandex.ru/handbook/python/article/model-isklyuchenij-python-try-except-else-finally-moduli)\n\n### [Тестовые данные для задач](./tests/data/test_data_53.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Обработка ошибок](./solutions/5.3/53_a.py) | [✅](./tests/5.3/test_53_a.py) |\n| B. [Ломать — не строить](./solutions/5.3/53_b.py) | [✅](./tests/5.3/test_53_b.py) |\n| C. [Ломать — не строить 2](./solutions/5.3/53_c.py) | [✅](./tests/5.3/test_53_c.py) |\n| D. [Контроль параметров](./solutions/5.3/53_d.py) | [✅](./tests/5.3/test_53_d.py) |\n| E. [Слияние с проверкой](./solutions/5.3/53_e.py) | [✅](./tests/5.3/test_53_e.py) |\n| F. [Корень зла 2](./solutions/5.3/53_f.py) | [✅](./tests/5.3/test_53_f.py) |\n| G. [Валидация имени](./solutions/5.3/53_g.py) | [✅](./tests/5.3/test_53_g.py) |\n| H. [Валидация имени пользователя](./solutions/5.3/53_h.py) | [✅](./tests/5.3/test_53_h.py) |\n| I. [Валидация пользователя](./solutions/5.3/53_i.py) | [✅](./tests/5.3/test_53_i.py) |\n| J. [Валидация пароля](./solutions/5.3/53_j.py) | [✅](./tests/5.3/test_53_j.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e6.1 Модули math и numpy\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Модули math и numpy](https://education.yandex.ru/handbook/python/article/moduli-math-i-numpy)\n\n### [Тестовые данные для задач](./tests/data/test_data_61.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Математика — круто, но это не точно](./solutions/6.1/61_a.py) | [✅](./tests/6.1/test_61_a.py) |\n| B. [Потоковый НОД](./solutions/6.1/61_b.py) | [✅](./tests/6.1/test_61_b.py) |\n| C. [Есть варианты?](./solutions/6.1/61_c.py) | [✅](./tests/6.1/test_61_c.py) |\n| D. [Среднее не арифметическое](./solutions/6.1/61_d.py) | [✅](./tests/6.1/test_61_d.py) |\n| E. [Шаг навстречу](./solutions/6.1/61_e.py) | [✅](./tests/6.1/test_61_e.py) |\n| F. [Матрица умножения](./solutions/6.1/61_f.py) | [✅](./tests/6.1/test_61_f.py) |\n| G. [Шахматная подготовка](./solutions/6.1/61_g.py) | [✅](./tests/6.1/test_61_g.py) |\n| H. [Числовая змейка 3.0](./solutions/6.1/61_h.py) | [✅](./tests/6.1/test_61_h.py) |\n| I. [Вращение](./solutions/6.1/61_i.py) | [✅](./tests/6.1/test_61_i.py) |\n| J. [Лесенка](./solutions/6.1/61_j.py) | [✅](./tests/6.1/test_61_j.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e6.2 Модуль pandas\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Модуль pandas](https://education.yandex.ru/handbook/python/article/modul-pandas)\n\n### [Тестовые данные для задач](./tests/data/test_data_62.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Длины всех слов - 2](./solutions/6.2/62_a.py) | [✅](./tests/6.2/test_62_a.py) |\n| B. [Длины всех слов по чётности](./solutions/6.2/62_b.py) | [✅](./tests/6.2/test_62_b.py) |\n| C. [Чек - 2](./solutions/6.2/62_c.py) | [✅](./tests/6.2/test_62_c.py) |\n| D. [Акция](./solutions/6.2/62_d.py) | [✅](./tests/6.2/test_62_d.py) |\n| E. [Длинные слова](./solutions/6.2/62_e.py) | [✅](./tests/6.2/test_62_e.py) |\n| F. [Отчёт успеваемости](./solutions/6.2/62_f.py) | [✅](./tests/6.2/test_62_f.py) |\n| G. [Отчёт неуспеваемости](./solutions/6.2/62_g.py) | [✅](./tests/6.2/test_62_g.py) |\n| H. [Обновление журнала](./solutions/6.2/62_h.py) | [✅](./tests/6.2/test_62_h.py) |\n| I. [Бесконечный морской бой](./solutions/6.2/62_i.py) | [✅](./tests/6.2/test_62_i.py) |\n| J. [Экстремум функции](./solutions/6.2/62_j.py) | [✅](./tests/6.2/test_62_j.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003e6.3 Модуль requests\u003c/h3\u003e\u003c/summary\u003e\n\n- [Теория Модуль requests](https://education.yandex.ru/handbook/python/article/modul-requests)\n\n### [Тестовые данные для задач](./tests/data/test_data_63.py)\n\n| Решение              | Тесты                |\n|----------------------|----------------------|\n| А. [Проверка системы](./solutions/6.3/63_a.py) | [✅](./tests/6.3/test_63_a.py) |\n| B. [Суммирование ответов](./solutions/6.3/63_b.py) | [✅](./tests/6.3/test_63_b.py) |\n| C. [Суммирование ответов 2](./solutions/6.3/63_c.py) | [✅](./tests/6.3/test_63_c.py) |\n| D. [Конкретное значение](./solutions/6.3/63_d.py) | [✅](./tests/6.3/test_63_d.py) |\n| E. [Суммирование ответов 3](./solutions/6.3/63_e.py) | [✅](./tests/6.3/test_63_e.py) |\n| F. [Список пользователей](./solutions/6.3/63_f.py) | [✅](./tests/6.3/test_63_f.py) |\n| G. [Рассылка сообщений](./solutions/6.3/63_g.py) | [✅](./tests/6.3/test_63_g.py) |\n| H. [Регистрация нового пользователя](./solutions/6.3/63_h.py) | [✅](./tests/6.3/test_63_h.py) |\n| I. [Изменение данных](./solutions/6.3/63_i.py) | [✅](./tests/6.3/test_63_i.py) |\n| J. [Удаление данных](./solutions/6.3/63_j.py) | [✅](./tests/6.3/test_63_j.py) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch2\u003eСоздание Issue\u003c/h2\u003e\u003c/summary\u003e\n\nЕсли вы обнаружили ошибку, очепятку или баг в проекте, пожалуйста, создайте новый issue, следуя этому шаблону:\n\n### Шаблон для Issue\n\n#### Описание ошибки\n\n- Краткое описание проблемы.\n\n#### Шаги для воспроизведения\n\n1. Опишите последовательность шагов, которые привели к появлению ошибки.\n2. Укажите точные команды, скрипты или действия, названия файла(ов) если возможно.\n\n#### Ожидаемое поведение\n\n- Опишите, как все должно работать при нормальных условиях.\n\n#### Фактическое поведение\n\n- Опишите, что происходит на самом деле.\n\n#### Контекст и окружение\n\n- Операционная система и версия.\n- Версия используемого ПО (Python, VSCode, PyCharm, etc.).\n- Укажите любые установленные зависимости (например, версии библиотек).\n\n#### Логи и скриншоты\n\n- Прикрепите любые ошибки из логов или скриншоты, если это применимо.\n\n#### Дополнительная информация\n\n- Любые другие важные детали, которые помогут в исправлении ошибки.\n\n---\n\nСпасибо за ваш вклад! 😊\n\n\u003c/details\u003e\n\n## Автор\n\n- [Andrei Pomortsev](https://www.linkedin.com/in/andreypomortsev/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreypomortsev%2Fyndx-python-handbook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreypomortsev%2Fyndx-python-handbook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreypomortsev%2Fyndx-python-handbook/lists"}