diff --git a/.github copy/ISSUE_TEMPLATE/bug_report.yml b/.github copy/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 00000000..b3cdc831 --- /dev/null +++ b/.github copy/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,88 @@ +name: Bug report +description: Create a bug report to help us address errors in the repository +labels: [bug] +body: + - type: markdown + attributes: + value: > +

Attention!

+ We insert an error message from the terminal into the name of the issues! + + - type: checkboxes + id: checks + attributes: + label: Checklist + description: "Please confirm the following:" + options: + - label: I added a descriptive title. + required: true + - label: I searched through [existing issues](https://t.me/c/1937296927/3602/25534) and couldn't find a solution or duplicate issue. + required: true + - label: I searched on the web (e.g. Google) or [chatGPT](https://t.me/c/1937296927/2415/23729) and didn't find any helpful information. + required: true + + - type: input + attributes: + label: "Hash commit / link" + description: > + If possible, provide a hash of your commit or just paste the link to it here + placeholder: "a0b0f414ae134aa1772d33bb930e5a960f9979e8" + validations: + required: false + + - type: input + attributes: + label: "Video" + description: > + insert a link to a YouTube video where you demonstrate the problem and show how to reproduce it + placeholder: "link to the video" + validations: + required: false + + - type: textarea + attributes: + label: "Attach a full screenshot and write what did you do to fix the problem?" + description: "Attach a full screenshot of your screen, which will show the entire desktop and your error" + validations: + required: true + + - type: textarea + attributes: + label: "Error from the terminal / Code" + description: > + write the code or copy the error from the terminal and paste it here, also provide log file if possible + placeholder: | + scripts/build_directory_md.py:22: error: Function is missing a type annotation + [no-untyped-def] + def md_prefix(i): + ^ + scripts/build_directory_md.py:32: error: Call to untyped function "md_prefix" + in typed context [no-untyped-call] + print(f"{md_prefix(i)} {new_part.replace('_', ' ').title()... + ^~~~~~~~~~~~~ + scripts/build_directory_md.py:46: error: Call to untyped function "md_prefix" + in typed context [no-untyped-call] + print(f"{md_prefix(indent)} [{filename}]({url})") + ... + validations: + required: true + + - type: textarea + attributes: + label: "Expected behavior" + description: "Describe the behavior you expect. May include images or videos." + validations: + required: true + - type: textarea + attributes: + label: "Actual behavior" + description: > + Actual behavior with a description of how to reproduce the problem + placeholder: | + ## Steps to Reproduce the Problem + 1. + 2. + 3. + ... + validations: + required: true diff --git a/.github/workflows/directory_writer.yml b/.github/workflows/directory_writer.yml new file mode 100644 index 00000000..c22b21e4 --- /dev/null +++ b/.github/workflows/directory_writer.yml @@ -0,0 +1,28 @@ +name: "SENATOROV" +permissions: + contents: write +on: [push] +jobs: + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-python@v5 + with: + python-version: 3.x + - name: Set script executable permission + run: chmod +x scripts/build_directory_md.py + - name: Write DIRECTORY.md and README.md + run: | + scripts/build_directory_md.py 2>&1 | tee DIRECTORY.md + scripts/build_directory_md.py 2>&1 | tee README.md + git config --global user.name "$GITHUB_ACTOR" + git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com" + git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY + - name: Commit and push changes + run: | + git add DIRECTORY.md README.md + git commit -m "SENATOROV updating DIRECTORY.md and README.md" || echo "No changes to commit" + git push --force diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml new file mode 100644 index 00000000..e2f2e994 --- /dev/null +++ b/.github/workflows/ruff.yml @@ -0,0 +1,24 @@ +name: "SENATOROV" +permissions: + contents: write +on: + push: + branches: + - "**" + schedule: + - cron: "0 0 * * *" # Run every day + workflow_dispatch: + create: + delete: + release: + issues: + pull_request: + branches: + - "**" +jobs: + ruff: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: pip install --user ruff + - run: ruff check --fix --output-format=github $(git ls-files '*.py' '*.ipynb') # Lint Python files diff --git a/Algorithms/dir b/Algorithms/dir new file mode 100644 index 00000000..e69de29b diff --git a/Algorithms/files/dir b/Algorithms/files/dir new file mode 100644 index 00000000..e69de29b diff --git a/DIRECTORY.md b/DIRECTORY.md index ea02afc0..b207d507 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -1,5 +1,10 @@ -## Docs - * Git - * [Git Command](docs/git/git_command.ipynb) - * [Intro To Git](docs/git/intro_to_git.ipynb) +## Python + * Made-Easy + * Python + * Made-Easy + * [Chapter 1 Intro To Datascience](Python/made-easy/Python/made-easy/chapter_1_intro_to_datascience.ipynb) + * [Chapter 2 Intro To Python](Python/made-easy/Python/made-easy/chapter_2_intro_to_python.ipynb) + +## [Log](/log.ipynb) + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..34d3e7ad --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 SENATOROVAI + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Math/calculus/limit/definition_by_Cauchy_and_Heine_2024_10_30(eliseeva).pdf b/Math/calculus/limit/definition_by_Cauchy_and_Heine_2024_10_30(eliseeva).pdf new file mode 100644 index 00000000..5c1039ac Binary files /dev/null and b/Math/calculus/limit/definition_by_Cauchy_and_Heine_2024_10_30(eliseeva).pdf differ diff --git a/Math/calculus/limit/limit_transition_in_inequalities_2024_10_30(eliseeva).pdf b/Math/calculus/limit/limit_transition_in_inequalities_2024_10_30(eliseeva).pdf new file mode 100644 index 00000000..59fe58c1 Binary files /dev/null and b/Math/calculus/limit/limit_transition_in_inequalities_2024_10_30(eliseeva).pdf differ diff --git a/Math/dir b/Math/dir new file mode 100644 index 00000000..e69de29b diff --git a/Math/lektorium/continuity_of_a_function.pdf b/Math/lektorium/continuity_of_a_function.pdf new file mode 100644 index 00000000..67db4e29 Binary files /dev/null and b/Math/lektorium/continuity_of_a_function.pdf differ diff --git a/Math/lektorium/functions_of_one_variable_ limit_of_a_function.pdf b/Math/lektorium/functions_of_one_variable_ limit_of_a_function.pdf new file mode 100644 index 00000000..4f3c2e49 Binary files /dev/null and b/Math/lektorium/functions_of_one_variable_ limit_of_a_function.pdf differ diff --git a/Math/lektorium/number_sequence.pdf b/Math/lektorium/number_sequence.pdf new file mode 100644 index 00000000..0eed7c57 Binary files /dev/null and b/Math/lektorium/number_sequence.pdf differ diff --git a/Math/school_math/dir b/Math/school_math/dir new file mode 100644 index 00000000..e69de29b diff --git a/Python/commits.ipynb b/Python/commits.ipynb new file mode 100644 index 00000000..cdc0f0bd --- /dev/null +++ b/Python/commits.ipynb @@ -0,0 +1,111 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Task commits.'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"Task commits.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Опишите своими словами назначение каждого\n", + " из этих типов коммитов:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- feat - добавляет новую фичу в код\n", + "- fix - исправляет баг в коде\n", + "- docs - такой нужен в случае, если изменения только в документации\n", + "- style - не влияет на сам код (пробелы, точки с запятой и т.д)\n", + "- refactor - помогает сделать код чище, т.е не влияет на фичи и\n", + "- не чинит баг. Но делает код более читабельным и понятным.\n", + "- test - добавляет тесты или исправляет существующие\n", + "- build - влияет на систему сборки или внешние зависимости\n", + "- ci - добавляет изменения в файлах конфигурации CI и скриптах. \n", + "То есть настраивает изменение процессов\n", + "сборки, тестирования и деплоя.\n", + "- perf - улучшается производительность \n", + "- chore - нужен для технического обслуживания проекта\n", + " ( модифицирование и обновление зависимостей)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) git commit -m \"fix: rounding error in round function \n", + "Now it correctly rounds numbers\"\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. git commit -m \"feat: add generateReport function\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4. git commit -m \"style: fix indentation and formatting\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5. git commit -m \"docs: update documentation for generateReport function\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6. git commit -m \"test: add unit tests for generateReport function\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "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.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Python/commits.py b/Python/commits.py new file mode 100644 index 00000000..485d2811 --- /dev/null +++ b/Python/commits.py @@ -0,0 +1,25 @@ +"""Task commits.""" + +# 1. Опишите своими словами назначение каждого +# из этих типов коммитов: + +# - feat - добавляет новую фичу в код +# - fix - исправляет баг в коде +# - docs - такой нужен в случае, если изменения только в документации +# - style - не влияет на сам код (пробелы, точки с запятой и т.д) +# - refactor - помогает сделать код чище, т.е не влияет на фичи и +# - не чинит баг. Но делает код более читабельным и понятным. +# - test - добавляет тесты или исправляет существующие +# - build - влияет на систему сборки или внешние зависимости +# - ci - добавляет изменения в файлах конфигурации CI и скриптах. +# То есть настраивает изменение процессов +# сборки, тестирования и деплоя. +# - perf - улучшается производительность +# - chore - нужен для технического обслуживания проекта +# ( модифицирование и обновление зависимостей) + +# 2) git commit -m "fix: rounding error in round function +# Now it correctly rounds numbers" +# +# +# diff --git a/Python/cpython.ipynb b/Python/cpython.ipynb new file mode 100644 index 00000000..86dd4639 --- /dev/null +++ b/Python/cpython.ipynb @@ -0,0 +1,287 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Task CPython and PyPy.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Что такое CPython и чем он отличается от Python?\n", + "\n", + "- CPython это распространенная реализация языка\n", + " Python.Реализация написана на C и\n", + " Python и является самой широко используемой\n", + " и поставляется по умолчанию при установке Python." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Сколько существует реализаций Python, и какая из них самая популярная?\n", + "\n", + "Существует 6 реализаций Python:\n", + "\n", + "- CPython\n", + "\n", + "- PyPy\n", + "\n", + "- Jython\n", + "\n", + "- IronPython\n", + "\n", + "- MicroPython\n", + "\n", + "- Stackless Python" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. На каком языке написан CPython?\n", + "На Python и C. Ядро написано на C" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. (опционально) Кто создал CPython?\n", + "Гвидо ван Россум" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5. Почему Python считается быстрым, несмотря на то, что это интерпретируемый язык?\n", + "\n", + "Python считается быстрым для разработки\n", + "благодаря его высокоуровневой структуре, которая делает\n", + "код проще и быстрее в написании. Оптимизации\n", + "в CPython, включая эффективные встроенные\n", + "структуры данных, такие как списки и словари,\n", + "а также использование сторонних библиотек\n", + "(например, NumPy), которые выполняются\n", + "на низкоуровневом языке C/C++,\n", + "обеспечивают дополнительное ускорение." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 7. Напишите путь к Интерпретатору CPython на вашем компьютере\n", + "- C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python313\\python.exe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 8. Что содержится в папке include в CPython?\n", + "В папке Include CPython содержатся\n", + "заголовочные файлы,\n", + "предоставляющие интерфейсы C API для работы \n", + "с интерпретатором Python, включая основные структуры\n", + "и функции, поддержку встроенных объектов \n", + "модули, обработку исключений, \n", + "управление памятью, многопоточность \n", + "и расширение Python на уровне C." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 9. Где можно найти исходный код CPython дайте ссылку на репозиторий гитхаб\n", + "https://github.com/python/cpython" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 10.(опционально) Как работает интерпретатор CPython\n", + "### при выполнении кода?\n", + "Интерпретатор CPython компилирует Python-код\n", + "в байт-код, который выполняется виртуальной машиной,\n", + "управляя памятью и сборкой мусора для работы объектов." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 11. Какая команда используется для запуска файла с помощью CPython?\n", + "- python file.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему?\n", + "Да, можно. Главное чтоб текстовый файл содержал код\n", + "и его можно запустить. Пайтон игнорирует расширение,\n", + "главное чтоб он смог прочитать код.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 13. Как указать путь к интерпретатору и файлу для выполнения кода?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\\n", + "Python313\\python.exe пробел file.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 14. Чем PyPy отличается от CPython?\n", + "Он быстрее и фокусируется на производительности.\n", + "Отличается от CPython тем, что PyPy использует \n", + "механизм Just-In-Time (JIT) компиляции, который \n", + "компилирует код в машинный код во время \n", + "выполнения, что ускоряет выполнение программ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 15. Почему PyPy не может использоваться для всех \n", + "### проектов на Python?\n", + "- Он довольно таки новый интерпретатор, и не часто используется из-за этого." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "17. Как установить PyPy после скачивания?\n", + "https://pypy.org/download.html\n", + " - устанавливаем на официальном сайте" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 18. Как запустить файл с помощью PyPy?\n", + "C:\\Users\\Admin\\Downloads\\pypy3.10-v7.3.17-win64\\pypy3.10-v7.3.17-win64 путь до exe + file.txt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 19. Почему PyPy выполняет код быстрее, чем CPython?\n", + "PyPy\n", + "компилирует часто выполняемые участки кода\n", + "в машинный код во время выполнения программы. \n", + "A cpython интерпретирует байт-код на каждом шагу \n", + "выполнения кода" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Практические задания\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Задание 1: Поиск и установка CPython\n", + "- Установлена версия 3.13.0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Задание 2: Исследование структуры CPython\n", + "- Всего в папке include 77 файлов на C" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Задание 3: Запуск файла с помощью CPython\n", + "- Выводится Hello from CPython!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Задание 4: Установка и использование PyPy\n", + "- Output : Hello from pypy!" + ] + }, + { + "attachments": { + "image.png": { + "image/png": "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N91000s7rzdAYGubbbZJgd0//elPxerVq9O00047FbvttlsK/t5zzz2d1OPn/vvvn5lOP/309N5NN92U5r1ccsklxTe+8Y3itddeK1atWtV5d258//vfL77zne8U8+fPLx5++OH03qGHHprKn33BtgWCuitWrEhB8Hnz5qUg7UcffZSCk6T/8pe/PLMMTFt6RJ0m8P3OO+/M1Gmmt99+e4Pe/dxA+Pa3v51ucrD8Tz75pNhll12KI488Mv3NcZGbtvSSJEmSJEnSbKs1pja9sunBGtOFF15YfPjhhyl4SC9Zjc52222X5u+//36a93LyySenfULA9sQTT0z76tRTTy2uuuqq9P+DDz443YgI05Y+d9ttt6X0+XTppevf39lzzz1Tj3hce+21KQ3reeqpp9J7caMkTFt6SZIkSZIkaS60+qFIhiFYuXJlek1vWY3OVlttleYMAdHPV7/61TR/9NFH1xs25aGHHpoJTC5atCjNMW3pmzriiCPSnLK/884702ssX7483dRhGJM8aD5t6SVJkiRJkqS50CqoDYZ5AEMTlDGEwV133ZWGcmC69dZbu/boJihOesY6jvQx5WNig3S8zzx39NFHV6ZvIpbBRPAOF1xwwcx7MXVDsO+BBx5I2zrMQD89kcH43nW99dZbnVfr9OrpPW3pAz2T2e/MqzCECV555ZU0DwTQ6R0Ohj4J05ZekiRJkiRJmgutg9p///d/n+aMO51j6AeGMCCwyxi8TARmTzvttA2C0WBMZNITSCZwFp9hYozj2cIPMcZ66ZWKcn6YuqFH8Oabb562dViBPwKuIKjIVNcWW2zRebVODGNSZdrSgxsW11133cycGyLlXsibbbZZmjOuOvX5nHPOST+iiKj3jOUdpi29JEmSJEmSNBdaBbXp2XrggQem1wxVEAiAMY4xAdizzjorjcnLFGNwH3bYYSlYFgjaEgTmf4zdy3jI8Rmm8hjHo8SQKrHe6JVaNe5yN0888UTaDj7bpFd1L7vuumuaV/VErhK9k/kxxLyc6SUfvXBz05Y+xw2KBx98MA1TEkNr8AOh+XJyjN99wgknFGeffXatITimLb0kSZIkSZI0W2oFtQ844IDUkzUmerbSK5nAIOMXh/322y/NCRa+/PLL6TUIGD///PPpM916MS9evLhrQHESsI3HHntsCsw36VXdyw477JDmdYPa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jYvfd73NdfmM4vptmO3nNNaf2Cf5NK6Gmb9N5s+f/0nndVfc5Tj55JOLvffeu9h2223Te++++27x6quvFsuXL0+v26BynX322cXvf//74swzz+y82x0VfI899igefPDBYtmyZZ1314r/XXXVVcVDDz3UeXeyNS2fHHekOIBx9913F9dcc016XVdUsMMPPzzNh+GBBx4oNt988+LDDz8sjj322M67s8/6PDesz721rT+5N998M9XjO+64Y+aLfFyR/xDbMcz9M0zDqD+D1P9JRVu7dOnS4ktf+tJMW0sdffTRR4sbb7wx/T0IlrlkyZJi8eLFxY477pje69dmsh/4TKR/7rnnittvv7148skn09+zpe5J3FlnndX6WB6n8p+N7R3EqM9PDjnkkOKoo44qFi5c2PV7n/Lcf//9izVr1szUx/PPP7845phjNmg3bE9sT3K2J9VsTya7PWE7FyxYUDz77LM9r80Ial9wwQVT1R6OI6+v58Ygx6/X1xvy+nr2DLP+9O2pzRcKDREro4GiQjDx+uCDDy5uvvnmTsrm7rzzztTAUeCsR+sbpHxooGgMsNtuu6X5XKNByOdzwfo8d6zPvbUtHz4T9ZgLQeo2dXzc6yAnFjFNg2lrH84444xUD2lXo61l+6mjp512WnHOOed0UrZDGd51111pWREA6YcLek5sSR/5oW258sor52yf0H7E8RsT+Yr/tT15Hsfyx6i2d1DRjsd8WCh7LjCoY7TNHP+sI7Y5xz4jMHP88cd33unO9sT2pMqoji/bk2ZYdz4flmlrT04//fS0DQTnNd6oN7QRXl/PvkHKx+vr7vhM1GO+l7y+Hm89g9o0RJdcckm6W/LUU08VJ5544kwhcfebysZdnUFwFw11vnSnUZvy4Y4UVq5cmfYRDdY4oN5wZ3RYBxknbJxIU0/rsD7PPetzb23K55lnnpmpx9Rp6jZ1nLpe99jQ7Ji29oF6yF34aGuZRxkcdNBBad4Wvbc4Eae+X3jhhemksxd6ENFDDddee+16xwu4eJ4Lt91228zxG9PHH3+c/kcPyEGMU/mHUW7vIMjHsNtz2t8VK1akCykujm655Za0D0499dTKnq3bbbddmr///vtp3o/tie1Jme2J7UmwPdFs8fp67rUpH6+ve/P6erL0DGp/73vfSzuPkwvulPIlGrj73e2LtIn77rsvnchw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bFn6Ozdt6bvVaVSVJ0466aRiyZIl6df68dxzzxW33377zP4om7b0kiRJkiRJ0mz69Kabbnpp5/UGCGxts802KbD7pz/9qVi9enWadtppp2K33XZLwd977rmnk3r83H///TPT6aefnt676aab0ryXSy65pPjGN75RvPbaa8WqVas6786N73//+8V3vvOdYv78+cXDDz+c3jv00ENT+bMv2LZAUHfFihUpCD5v3rwUpP3oo49ScJL0X/7yl2eWgWlLj6jTBL7feeedmTrN9Pbbb2/Qu58bCN/+9rfTTQ6W/8knnxS77LJLceSRR6a/OS5y05ZekiRJkiRJmm21xtSmVzY9WGO68MILiw8//DAFD+klq9HZbrvt0vz9999P815OPvnktE8I2J544olpX5166qnFVVddlf5/8MEHpxsRYdrS52677baUPp8uvXT9+zt77rln6hGPa6+9NqVhPU899VR6L26UhGlLL0mSJEmSJM2FVj8UyTAEK1euTK/pLavR2WqrrdKcISD6+epXv5rmjz766HrDpjz00EMzgclFixalOaYtfVNHHHFEmlP2d955Z3qN5cuXp5s6DGOSB82nLb0kSZIkSZI0F1oFtcEwD2BogjKGMLjrrrvSUA5Mt956a9ce3QTFSc9Yx5E+pnxMbJCO95nnjj766Mr0TcQymAje4YILLph5L6ZuCPY98MADaVuHGeinJzIY37uut956q/NqnV49vactfaBnMvudeRWGMMErr7yS5oEAOr3DwdAnYdrSS5IkSZIkSXOhdVD77//+79OccadzDP3AEAYEdhmDl4nA7GmnnbZBMBqMiUx6AskEzuIzTIxxPFv4IcZYL71SUc4PUzf0CN58883Ttg4r8EfAFQQVmeraYostOq/WiWFMqkxbenDD4rrrrpuZc0Ok3At5s802S3PGVac+n3POOelHFBH1nrG8w7SllyRJkiRJkuZCq6A2PVsPPPDA9JqhCgIBMMYxJgB71llnpTF5mWIM7sMOOywFywJBW4LA/I+xexkPOT7DVB7jeJQYUiXWG71Sq8Zd7uaJJ55I28Fnm/Sq7mXXXXdN86qeyFWidzI/hpiXM73koxdubtrS57hB8eCDD6ZhSmJoDX4gNF9OjvG7TzjhhOLss8+uNQTHtKWXJEmSJEmSZkutoPYBBxyQerLGRM9WeiUTGGT84rDffvul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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Задание 5: Сравнение производительности CPython и PyPy\n", + "\n", + "CPython: \n", + "- Result: 49999995000000\n", + "- Execution time: 1.0235819816589355 seconds\n", + "\n", + "PyPy:\n", + "- Result: 49999995000000\n", + "- Execution time: 0.07886266708374023 seconds\n", + "\n", + "![image.png](attachment:image.png)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Разница между интерпретаторами есть,и не малая\n", + "PyPy быстрее Cpython в 12 раз!!!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Python/cpython.py b/Python/cpython.py new file mode 100644 index 00000000..0b0a5044 --- /dev/null +++ b/Python/cpython.py @@ -0,0 +1,136 @@ +"""Task CPython and PyPy.""" + +# ### 1. Что такое CPython и чем он отличается от Python? +# +# - CPython это распространенная реализация языка +# Python.Реализация написана на C и +# Python и является самой широко используемой +# и поставляется по умолчанию при установке Python. + +# ### 2. Сколько существует реализаций Python, и какая из них самая популярная? +# +# Существует 6 реализаций Python: +# +# - CPython +# +# - PyPy +# +# - Jython +# +# - IronPython +# +# - MicroPython +# +# - Stackless Python + +# ### 3. На каком языке написан CPython? +# На Python и C. Ядро написано на C + +# ### 4. (опционально) Кто создал CPython? +# Гвидо ван Россум + +# ### 5. Почему Python считается быстрым, несмотря на то, что это интерпретируемый язык? +# +# Python считается быстрым для разработки +# благодаря его высокоуровневой структуре, которая делает +# код проще и быстрее в написании. Оптимизации +# в CPython, включая эффективные встроенные +# структуры данных, такие как списки и словари, +# а также использование сторонних библиотек +# (например, NumPy), которые выполняются +# на низкоуровневом языке C/C++, +# обеспечивают дополнительное ускорение. + +# ### 7. Напишите путь к Интерпретатору CPython на вашем компьютере +# - C:\Users\Admin\AppData\Local\Programs\Python\Python313\python.exe + +# ### 8. Что содержится в папке include в CPython? +# В папке Include CPython содержатся +# заголовочные файлы, +# предоставляющие интерфейсы C API для работы +# с интерпретатором Python, включая основные структуры +# и функции, поддержку встроенных объектов +# модули, обработку исключений, +# управление памятью, многопоточность +# и расширение Python на уровне C. + +# ### 9. Где можно найти исходный код CPython дайте ссылку на репозиторий гитхаб +# https://github.com/python/cpython + +# ### 10.(опционально) Как работает интерпретатор CPython +# ### при выполнении кода? +# Интерпретатор CPython компилирует Python-код +# в байт-код, который выполняется виртуальной машиной, +# управляя памятью и сборкой мусора для работы объектов. + +# ### 11. Какая команда используется для запуска файла с помощью CPython? +# - python file.py + +# +# ### 12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему? +# Да, можно. Главное чтоб текстовый файл содержал код +# и его можно запустить. Пайтон игнорирует расширение, +# главное чтоб он смог прочитать код. +# + +# ### 13. Как указать путь к интерпретатору и файлу для выполнения кода? +# + +# C:\Users\Admin\AppData\Local\Programs\Python\ +# Python313\python.exe пробел file.py + +# ### 14. Чем PyPy отличается от CPython? +# Он быстрее и фокусируется на производительности. +# Отличается от CPython тем, что PyPy использует +# механизм Just-In-Time (JIT) компиляции, который +# компилирует код в машинный код во время +# выполнения, что ускоряет выполнение программ. + +# ### 15. Почему PyPy не может использоваться для всех +# ### проектов на Python? +# - Он довольно таки новый интерпретатор, и не часто используется из-за этого. + +# 17. Как установить PyPy после скачивания? +# https://pypy.org/download.html +# - устанавливаем на официальном сайте + +# ### 18. Как запустить файл с помощью PyPy? +# C:\Users\Admin\Downloads\pypy3.10-v7.3.17-win64\pypy3.10-v7.3.17-win64 путь до exe + file.txt + +# ### 19. Почему PyPy выполняет код быстрее, чем CPython? +# PyPy +# компилирует часто выполняемые участки кода +# в машинный код во время выполнения программы. +# A cpython интерпретирует байт-код на каждом шагу +# выполнения кода + +# ## Практические задания +# + +# Задание 1: Поиск и установка CPython +# - Установлена версия 3.13.0 + +# Задание 2: Исследование структуры CPython +# - Всего в папке include 77 файлов на C + +# Задание 3: Запуск файла с помощью CPython +# - Выводится Hello from CPython! + +# Задание 4: Установка и использование PyPy +# - Output : Hello from pypy! + +# Задание 5: Сравнение производительности CPython и PyPy +# +# CPython: +# - Result: 49999995000000 +# - Execution time: 1.0235819816589355 seconds +# +# PyPy: +# - Result: 49999995000000 +# - Execution time: 0.07886266708374023 seconds +# +# ![image.png](attachment:image.png) +# + +# Разница между интерпретаторами есть,и не малая +# PyPy быстрее Cpython в 12 раз!!! diff --git a/Python/made-easy/Python/made-easy/chapter_1_intro_to_datascience.ipynb b/Python/made-easy/Python/made-easy/chapter_1_intro_to_datascience.ipynb new file mode 100644 index 00000000..62cf4d18 --- /dev/null +++ b/Python/made-easy/Python/made-easy/chapter_1_intro_to_datascience.ipynb @@ -0,0 +1,574 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Chapter 1 notes for Made easy.'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"Chapter 1 notes for Made easy.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Введение в Data Science \n", + "*Data Science* - это научная дисциплина, \n", + "которая включает в себя извлечение информации\n", + "из огромных объемов данных " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "с использованием различных научных методов,\n", + "алгоритмов и процессов.\n", + "Эта наука помогает обнаруживать\n", + "в необработанных данных скрытые закономерности. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Зачем нам Data Science?\n", + "Эта наука помогает:\n", + "1. Задавать правильные вопросы\n", + "2. Находить основную причину проблемы\n", + "3. Находить закономерности среди,\n", + "хаотичных необработанных данных\n", + "4. Создавать модели для предиктивного анализа" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5. Визуализировать и отображать \n", + "результаты с помощью графиков, \n", + "информационных панелей и т. д.\n", + "6. Наделять машины интеллектом\n", + "7. Определять лояльность клиентов\n", + " с помощью анализа настроений\n", + "8. принимать более качественные и быстрые решения\n", + "9. Рекомендовать правильный продукт \n", + "нужному клиенту для развития нашего бизнеса." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## История Data Science\n", + "- Около 18 000 года до н. э. Кость Ишанго,\n", + "один из самых доисторических\n", + "свидетельств хранения данных.\n", + "Палеолитические племена делали зарубки на палках\n", + "для подсчета количества запасов пищи. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Около 2400 года до н. э. в Вавилоне появились \n", + "счёты — первые устройства для вычислений, \n", + "а также возникли первые библиотеки \n", + "для массового хранения данных." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- 1663 год ученый Джон Граунт проводит\n", + " первый эксперимент по статистическому \n", + "анализу данных, для того чтобы разработать систему раннего \n", + "предупреждение о бубонной чуме" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- 1880 год инженер Герман Холлерит создает \n", + "Табулирующую машину Холлерита, \n", + "сокращая 10 лет обработки данных до 3 месяцев,\n", + "основанная им компания называется IBM.\n", + "- 1928 год Фриц Пфлеумер \n", + "изобрел жесткий магнитный диск\n", + "- 1991 год Ученый-компьютерщик Тим Бернерс-Ли\n", + " объявил о зарождении Интернета.\n", + "- 1997 год появился сервис Google Search. \"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Настоящее и будущее Data Science \n", + "Развитие Data Science идет нескольким направлениям:\n", + "- Искусственный интеллект (ИИ) - направление,\n", + " в которой основное внимание \n", + "уделяется созданию интеллектуальных машин,\n", + " способных работать и принимать \n", + "решения как человек.\n", + "- Машинное обучение - это инструмент для \n", + "извлечения знаний из данных. \n", + "В машинном обучении модели могут обучаться\n", + " на данных самостоятельно или \n", + "поэтапно: обучение с учителем, \n", + "т. е. на данных, подготовленных человеком, \n", + "или обучение без учителя." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Глубокое обучение - это создание многослойных\n", + " нейронных сетей в областях,\n", + " где требуется более продвинутый или быстрый анализ.\n", + "- Большие данные - это работа с огромными объемами \n", + "часто неструктурированных данных.\n", + "Специалист по Data Science - это человек,\n", + " который разбирается в статистике \n", + "лучше любого программиста \n", + "и программирует лучше любого статистика» (Джош \n", + "Уиллс). \n", + "Специалист по Data Science анализирует бизнес-данные,\n", + "извлекая из них важную \n", + "информацию." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Основы компьютерного программирования \n", + "Компьютер - это послушный, но не слишком умный слуга. \n", + "Он делает в точности \n", + "то, что мы ему говорим, ни больше ни меньше.\n", + " Следовательно, когда мы даем компьютеру инструкции \n", + " (посредством программ), \n", + " эти инструкции должны быть конкретными и последовательными.\n", + "\n", + "Алгоритм - это конечная последовательность четко определенных, \n", + "реализуемых компьютером инструкций для решения\n", + " какой-то проблемы или для выполнения вычислений." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Операторы алгоритмов, которые могут \n", + "присутствовать в различных комбинациях\n", + "1. Последовательные операторы. \n", + "2. Условные операторы. \n", + "3. Циклы или итерации.\n", + "## Блок-схемы\n", + "Алгоритмы можно изображать в графической форме\n", + " с использованием определенных обозначений.\n", + " Полученное изображение называется блок-схемой. \n", + "![alt text](image.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Язык программирования\n", + "Для того чтобы дать команды (указания) компьютеры\n", + "мы используемы языки программирования,их много.\n", + "Но компьютер понимает только машинный код. \n", + "\n", + " *Исходный код*- это то, что пишут программисты \n", + " на всех языках программирования.\n", + " Это те самые указания,\n", + " которые мы даем компьютеру, \n", + " написанные неформатированным текстом.\n", + "Существуют три основных способа перевода\n", + "исходного кода в машинный код: \n", + "- компиляция; \n", + "- интерпретация; \n", + "- сочетание этих двух способов." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " *Компилятор* - программа, преобразующая\n", + "исходный код в машинный. \n", + " *Интерпретатор* - компьютерная программа,\n", + "которая выполняет инструкции,\n", + " написанные на языке программирования, \n", + " без предварительной компиляции в программу на машинном \n", + "языке. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Сравнение компилятора и интерпретатора \n", + "1. И компиляторы, и интерпретаторы преобразуют \n", + "исходный код (текстовые файлы) в машинный язык. \n", + "Основное отличие: компилятор генерирует автономную программу, \n", + "а интерпретатор выполняет действия,\n", + "описанные в высокоуровневом языке." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. После компиляции программы ее исходный\n", + " код для запуска больше не требуется.\n", + " У интерпретируемых программ исходный код \n", + " требуется для запуска программы каждый раз." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. Обычно интерпретируемые программы работают медленнее,\n", + " чем компилируемые. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*IDE (Интегрированная среда разработки)* - в этих\n", + "программах есть специальные инструменты,\n", + " необходимые для написания, отладки \n", + "и компиляции кода. (Используем Visual Studio Code.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Упражнения\n", + "Ответы на вопросы\n", + "1. *Какие предметные области входят в Data Science?*\n", + " *Что между ними общего и в чем различие?*\n", + "Предметные области в DS: программирование, статистика, базы данных,\n", + "моделирование.\n", + " Они похожи тем, что необходимы для анализа\n", + "и получения результатов из большого объема данных, \n", + "а также для нахождения закономерностей на их основе. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Эти области тесно связаны между собой: например, \n", + "чтобы создать модель,\n", + "сначала нужно извлечь данные (базы данных),\n", + "затем очистить их (программирование), \n", + "а после этого провести моделирование \n", + "(статистика и программирование). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Они различаются тем, что решают задачи разного типа.\n", + "Для хранения данных используются базы данных, \n", + "для выявления закономерностей — статистика и т. д." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. *Как вы понимаете термин «алгоритм»?*\n", + "*Как алгоритмы связаны с блок-схемами?*\n", + " Алгоритм - это последовательность действий для решения задач.\n", + " Алгоритмы удобно изображать в виде блок-схем,\n", + " в начале алгоритм пишем на естественном языке,\n", + " далее переводим в блок-схему , а только затем пишем код на ЯП." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. *Какую программу можно назвать хорошей?*\n", + "*Запишите все характеристики, какие удастся придумать.* \n", + "Программа, чтобы ее можно было назвать хорошей должна:\n", + "1) Выполняться быстро\n", + "2) Занимать как можно меньше памяти\n", + "4) Содержать как можно меньше багов" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4. *Какой язык понимает компьютер?* \n", + "Компьютер понимает машинный код, \n", + "который состоит из 0 и 1.\n", + " Машинный код который представлен последовательностями 0 и 1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5. *Чем языки программирования отличаются от языков,*\n", + "*на которых мы говорим?*\n", + "Тем что, ЯП в первую очередь предназначены\n", + " для выполнения инструкции, \n", + "которые мы задаем в коде компьютеру.\n", + "ЯП абстракты, на нем человеку было бы сложно пообщаться.\n", + "Человеческий язык предназначен для взаимодействия с социумом,\n", + " он прост для общения с людьми. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Правда или ложь\n", + "1. Правда\n", + "2. Ложь\n", + "3. Ложь\n", + "4. Правда\n", + "5. Ложь\n", + "6. Ложь\n", + "7. Правда\n", + "8. Ложь\n", + "9. Правда\n", + "10. Ложь" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Практические задания\n", + "1. Алгоритм для расчета простых процентов от некоторой суммы.\n", + "Шаг 1: Объявляем сумму \n", + "Шаг 2: Объявляем процентное значение, который хотим найти\n", + "Шаг 3: Умножаем сумму (шаг 1) на процентное значение (шаг 2)\n", + "Шаг 4: Делим получившееся значение(шаг 3) на 100.\n", + "Шаг 5: Выводим результат." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "120.0\n" + ] + } + ], + "source": [ + "summa: float = 400\n", + "# Шаг 1: Вводим сумму\n", + "percent: float = 30\n", + "# Шаг 2: Вводим процентное значение, который хотим найти\n", + "value: float = summa * percent\n", + "# Шаг 3: Умножаем сумму (шаг 1) на процентное значение (шаг 2)\n", + "result: float = value / 100\n", + "# Шаг 4: Делим получившееся значение(шаг 3) на 100.\n", + "print(result) # Шаг 5: Выводим результат." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. Алгоритм для вычисления площади прямоугольника. \n", + "Шаг 1: Объявляем стороны прямоугольника ( длину и ширину)\n", + "Шаг 2: Умножаем обе стороны\n", + "Шаг 3: Выводим результат" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "170\n" + ] + } + ], + "source": [ + "length: int = 17 # Шаг 1: Объявляем стороны прямоугольника ( длину и ширину)\n", + "width: int = 10\n", + "\n", + "area: int = length * width # Шаг 2: Умножаем обе стороны\n", + "\n", + "print(area) # Шаг 3: Выводим результат" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. Алгоритм вычисления периметра круга. \n", + "Шаг 1: Вводим радиус круга\n", + "Шаг 2: Вычисляем периметр\n", + "Шаг 3: Выводим результат" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "50.24\n" + ] + } + ], + "source": [ + "circle_radius: float = 8\n", + "# Шаг 1: Вводим радиус круга\n", + "\n", + "perimeter: float = 2 * 3.14 * circle_radius\n", + "# Шаг 2: Вычисляем периметр\n", + "\n", + "print(perimeter)\n", + "# Шаг 3: Выводим результат" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4. Напишите алгоритм, \n", + "который находит все простые числа меньше 100. \n", + "\n", + "Шаг 1: Инициализировать пустой список primes\n", + "Шаг 2: Для num от 2 до 99:\n", + " is_prime = истинно\n", + "\n", + " Шаг 3: Для i от 2 до √num:\n", + " Если num % i = 0:\n", + " is_prime = ложь\n", + " Прервать цикл\n", + "\n", + " Шаг 4: Если is_prime:\n", + " Добавить num в список primes\n", + "Шаг 5: Вывести список primes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5. Напишите алгоритм превращения предложения, \n", + "написанного в верхнем регистре,\n", + " в обычный для предложений регистр. \n", + "\n", + "Шаг 1: Ввод предложения в верхнем регистре\n", + "Шаг 2: Инициализировать пустую строку normal_case\n", + "Шаг 3: Для каждого символа в предложении:\n", + " Если символ является буквой:\n", + " Добавить символ в normal_case в нижнем регистре\n", + " Иначе:\n", + " Добавить символ в normal_case без изменений\n", + "Шаг 4: Вывести normal_case\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6. Составьте блок-схему приготовления льда \n", + "из кипяченой воды с помощью холодильника.\n", + "![alt text](diagram_6.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7. Составьте блок-схему для нахождения суммы всех четных чисел меньше ста.\n", + "![alt text](diagram_7.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8. Составьте блок-схему для вычисления\n", + " квадрата всех нечетных чисел от 1 до 15 включительно\n", + "![alt text](diagram_8.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "9. Составьте блок-схему\n", + " вывода таблицы умножения на 3. \n", + "![alt text](diagram_9.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "10. Составьте блок-схему для расчета\n", + " сложных процентов (с капитализацией). \n", + "![alt text](diagram_10.png)" + ] + } + ], + "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.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Python/made-easy/Python/made-easy/chapter_1_intro_to_datascience.py b/Python/made-easy/Python/made-easy/chapter_1_intro_to_datascience.py new file mode 100644 index 00000000..f83cce07 --- /dev/null +++ b/Python/made-easy/Python/made-easy/chapter_1_intro_to_datascience.py @@ -0,0 +1,311 @@ +"""Chapter 1 notes for Made easy.""" + +# # Введение в Data Science +# *Data Science* - это научная дисциплина, +# которая включает в себя извлечение информации +# из огромных объемов данных + +# с использованием различных научных методов, +# алгоритмов и процессов. +# Эта наука помогает обнаруживать +# в необработанных данных скрытые закономерности. + +# ## Зачем нам Data Science? +# Эта наука помогает: +# 1. Задавать правильные вопросы +# 2. Находить основную причину проблемы +# 3. Находить закономерности среди, +# хаотичных необработанных данных +# 4. Создавать модели для предиктивного анализа + +# 5. Визуализировать и отображать +# результаты с помощью графиков, +# информационных панелей и т. д. +# 6. Наделять машины интеллектом +# 7. Определять лояльность клиентов +# с помощью анализа настроений +# 8. принимать более качественные и быстрые решения +# 9. Рекомендовать правильный продукт +# нужному клиенту для развития нашего бизнеса. + +# ## История Data Science +# - Около 18 000 года до н. э. Кость Ишанго, +# один из самых доисторических +# свидетельств хранения данных. +# Палеолитические племена делали зарубки на палках +# для подсчета количества запасов пищи. +# + +# - Около 2400 года до н. э. в Вавилоне появились +# счёты — первые устройства для вычислений, +# а также возникли первые библиотеки +# для массового хранения данных. + +# - 1663 год ученый Джон Граунт проводит +# первый эксперимент по статистическому +# анализу данных, для того чтобы разработать систему раннего +# предупреждение о бубонной чуме + +# - 1880 год инженер Герман Холлерит создает +# Табулирующую машину Холлерита, +# сокращая 10 лет обработки данных до 3 месяцев, +# основанная им компания называется IBM. +# - 1928 год Фриц Пфлеумер +# изобрел жесткий магнитный диск +# - 1991 год Ученый-компьютерщик Тим Бернерс-Ли +# объявил о зарождении Интернета. +# - 1997 год появился сервис Google Search. " + +# ## Настоящее и будущее Data Science +# Развитие Data Science идет нескольким направлениям: +# - Искусственный интеллект (ИИ) - направление, +# в которой основное внимание +# уделяется созданию интеллектуальных машин, +# способных работать и принимать +# решения как человек. +# - Машинное обучение - это инструмент для +# извлечения знаний из данных. +# В машинном обучении модели могут обучаться +# на данных самостоятельно или +# поэтапно: обучение с учителем, +# т. е. на данных, подготовленных человеком, +# или обучение без учителя. + +# - Глубокое обучение - это создание многослойных +# нейронных сетей в областях, +# где требуется более продвинутый или быстрый анализ. +# - Большие данные - это работа с огромными объемами +# часто неструктурированных данных. +# Специалист по Data Science - это человек, +# который разбирается в статистике +# лучше любого программиста +# и программирует лучше любого статистика» (Джош +# Уиллс). +# Специалист по Data Science анализирует бизнес-данные, +# извлекая из них важную +# информацию. + +# # Основы компьютерного программирования +# Компьютер - это послушный, но не слишком умный слуга. +# Он делает в точности +# то, что мы ему говорим, ни больше ни меньше. +# Следовательно, когда мы даем компьютеру инструкции +# (посредством программ), +# эти инструкции должны быть конкретными и последовательными. +# +# Алгоритм - это конечная последовательность четко определенных, +# реализуемых компьютером инструкций для решения +# какой-то проблемы или для выполнения вычислений. + +# ### Операторы алгоритмов, которые могут +# присутствовать в различных комбинациях +# 1. Последовательные операторы. +# 2. Условные операторы. +# 3. Циклы или итерации. +# ## Блок-схемы +# Алгоритмы можно изображать в графической форме +# с использованием определенных обозначений. +# Полученное изображение называется блок-схемой. +# ![alt text](image.png) + +# ### Язык программирования +# Для того чтобы дать команды (указания) компьютеры +# мы используемы языки программирования,их много. +# Но компьютер понимает только машинный код. +# +# *Исходный код*- это то, что пишут программисты +# на всех языках программирования. +# Это те самые указания, +# которые мы даем компьютеру, +# написанные неформатированным текстом. +# Существуют три основных способа перевода +# исходного кода в машинный код: +# - компиляция; +# - интерпретация; +# - сочетание этих двух способов. + +# *Компилятор* - программа, преобразующая +# исходный код в машинный. +# *Интерпретатор* - компьютерная программа, +# которая выполняет инструкции, +# написанные на языке программирования, +# без предварительной компиляции в программу на машинном +# языке. + +# Сравнение компилятора и интерпретатора +# 1. И компиляторы, и интерпретаторы преобразуют +# исходный код (текстовые файлы) в машинный язык. +# Основное отличие: компилятор генерирует автономную программу, +# а интерпретатор выполняет действия, +# описанные в высокоуровневом языке. + +# 2. После компиляции программы ее исходный +# код для запуска больше не требуется. +# У интерпретируемых программ исходный код +# требуется для запуска программы каждый раз. + +# 3. Обычно интерпретируемые программы работают медленнее, +# чем компилируемые. + +# *IDE (Интегрированная среда разработки)* - в этих +# программах есть специальные инструменты, +# необходимые для написания, отладки +# и компиляции кода. (Используем Visual Studio Code.) + +# ## Упражнения +# Ответы на вопросы +# 1. *Какие предметные области входят в Data Science?* +# *Что между ними общего и в чем различие?* +# Предметные области в DS: программирование, статистика, базы данных, +# моделирование. +# Они похожи тем, что необходимы для анализа +# и получения результатов из большого объема данных, +# а также для нахождения закономерностей на их основе. + +# Эти области тесно связаны между собой: например, +# чтобы создать модель, +# сначала нужно извлечь данные (базы данных), +# затем очистить их (программирование), +# а после этого провести моделирование +# (статистика и программирование). + +# Они различаются тем, что решают задачи разного типа. +# Для хранения данных используются базы данных, +# для выявления закономерностей — статистика и т. д. + +# 2. *Как вы понимаете термин «алгоритм»?* +# *Как алгоритмы связаны с блок-схемами?* +# Алгоритм - это последовательность действий для решения задач. +# Алгоритмы удобно изображать в виде блок-схем, +# в начале алгоритм пишем на естественном языке, +# далее переводим в блок-схему , а только затем пишем код на ЯП. + +# 3. *Какую программу можно назвать хорошей?* +# *Запишите все характеристики, какие удастся придумать.* +# Программа, чтобы ее можно было назвать хорошей должна: +# 1) Выполняться быстро +# 2) Занимать как можно меньше памяти +# 4) Содержать как можно меньше багов + +# 4. *Какой язык понимает компьютер?* +# Компьютер понимает машинный код, +# который состоит из 0 и 1. +# Машинный код который представлен последовательностями 0 и 1. + +# 5. *Чем языки программирования отличаются от языков,* +# *на которых мы говорим?* +# Тем что, ЯП в первую очередь предназначены +# для выполнения инструкции, +# которые мы задаем в коде компьютеру. +# ЯП абстракты, на нем человеку было бы сложно пообщаться. +# Человеческий язык предназначен для взаимодействия с социумом, +# он прост для общения с людьми. + +# ## Правда или ложь +# 1. Правда +# 2. Ложь +# 3. Ложь +# 4. Правда +# 5. Ложь +# 6. Ложь +# 7. Правда +# 8. Ложь +# 9. Правда +# 10. Ложь + +# ## Практические задания +# 1. Алгоритм для расчета простых процентов от некоторой суммы. +# Шаг 1: Объявляем сумму +# Шаг 2: Объявляем процентное значение, который хотим найти +# Шаг 3: Умножаем сумму (шаг 1) на процентное значение (шаг 2) +# Шаг 4: Делим получившееся значение(шаг 3) на 100. +# Шаг 5: Выводим результат. + +summa: float = 400 +# Шаг 1: Вводим сумму +percent: float = 30 +# Шаг 2: Вводим процентное значение, который хотим найти +value: float = summa * percent +# Шаг 3: Умножаем сумму (шаг 1) на процентное значение (шаг 2) +result: float = value / 100 +# Шаг 4: Делим получившееся значение(шаг 3) на 100. +print(result) # Шаг 5: Выводим результат. + +# 2. Алгоритм для вычисления площади прямоугольника. +# Шаг 1: Объявляем стороны прямоугольника ( длину и ширину) +# Шаг 2: Умножаем обе стороны +# Шаг 3: Выводим результат + +# + +length: int = 17 # Шаг 1: Объявляем стороны прямоугольника ( длину и ширину) +width: int = 10 + +area: int = length * width # Шаг 2: Умножаем обе стороны + +print(area) # Шаг 3: Выводим результат +# - + +# 3. Алгоритм вычисления периметра круга. +# Шаг 1: Вводим радиус круга +# Шаг 2: Вычисляем периметр +# Шаг 3: Выводим результат + +# + +circle_radius: float = 8 +# Шаг 1: Вводим радиус круга + +perimeter: float = 2 * 3.14 * circle_radius +# Шаг 2: Вычисляем периметр + +print(perimeter) +# Шаг 3: Выводим результат +# - + +# 4. Напишите алгоритм, +# который находит все простые числа меньше 100. +# +# Шаг 1: Инициализировать пустой список primes +# Шаг 2: Для num от 2 до 99: +# is_prime = истинно +# +# Шаг 3: Для i от 2 до √num: +# Если num % i = 0: +# is_prime = ложь +# Прервать цикл +# +# Шаг 4: Если is_prime: +# Добавить num в список primes +# Шаг 5: Вывести список primes + +# 5. Напишите алгоритм превращения предложения, +# написанного в верхнем регистре, +# в обычный для предложений регистр. +# +# Шаг 1: Ввод предложения в верхнем регистре +# Шаг 2: Инициализировать пустую строку normal_case +# Шаг 3: Для каждого символа в предложении: +# Если символ является буквой: +# Добавить символ в normal_case в нижнем регистре +# Иначе: +# Добавить символ в normal_case без изменений +# Шаг 4: Вывести normal_case +# + +# 6. Составьте блок-схему приготовления льда +# из кипяченой воды с помощью холодильника. +# ![alt text](diagram_6.png) + +# 7. Составьте блок-схему для нахождения суммы всех четных чисел меньше ста. +# ![alt text](diagram_7.jpg) + +# 8. Составьте блок-схему для вычисления +# квадрата всех нечетных чисел от 1 до 15 включительно +# ![alt text](diagram_8.png) + +# 9. Составьте блок-схему +# вывода таблицы умножения на 3. +# ![alt text](diagram_9.png) + +# 10. Составьте блок-схему для расчета +# сложных процентов (с капитализацией). +# ![alt text](diagram_10.png) diff --git a/Python/made-easy/Python/made-easy/chapter_2_intro_to_python.ipynb b/Python/made-easy/Python/made-easy/chapter_2_intro_to_python.ipynb new file mode 100644 index 00000000..d54ba7ee --- /dev/null +++ b/Python/made-easy/Python/made-easy/chapter_2_intro_to_python.ipynb @@ -0,0 +1,417 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Chapter 2 notes for Made easy.'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"Chapter 2 notes for Made easy.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Python* - это интерпретируемый высокоуровневый язык\n", + " программирования общего назначения с открытым исходным кодом." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Python был создан Гвидо ван Россумом \n", + "и впервые выпущен в 1991 году. \n", + "Он поддерживает несколько парадигм программирования,\n", + "включая структурное ( особенно процедурное)\n", + "объектно-ориентированное и функциональное программирование.\n", + " \n", + "Это простой в освоении и очень мощный язык программирования .\n", + "Элегантный синтаксис и динамическая типизация \n", + "Python вместе с его \n", + "интерпретируемостью делают его идеальным языком \n", + "для написания сценариев и \n", + "быстрой разработки приложений во многих областях \n", + "и на множестве платформ" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### История появления языка\n", + "Язык Python был придуман в конце 1980-х гг. Гвидо ван Россумом, сотрудником \n", + "Centrum Wiskunde & Infonnatica (CWI) в Нидерландах, как преемник языка АВС. \n", + "Его реализация началась в декабре 1989 г. \n", + "Ван Россум был ведущим разработчиком \n", + "Python до 12 июля 20 18 г., после чего ушел в\n", + "«отпуск на неопределенный срок» и \n", + "сложил с себя обязательства «пожизненного самоизбранного диктатора\n", + "в королевстве Python.\n", + "\n", + "16 октября 2000 r. был выпущен Python 2.0,\n", + "в котором появилось множество новых \n", + "базовых функций, включая сборщик мусора\n", + "с обнаружением циклических ссылок и \n", + "поддержку Unicode. \n", + "\n", + "3 декабря 2008 r. бьш выпущен Python 3 .0. \n", + "Это была сильно измененная версия \n", + "языка, не имеющая полной обратной совместимости.\n", + "В январе 2017 r. Google \n", + "объявила о работе над транс-компилятором из Python 2. 7 в\n", + "Go для повышения производительности при параллельных нагрузках. \n", + "\n", + "Язык назван в честь шоу на канале ВВС «Летающий цирк Монти Пайтона» \n", + "(Monty Python's Flying Circus) и со змеями никак не связан\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Python и другие языки программирования\n", + "Python позволяет писать программы компактно и читабельно.\n", + "Программы, написанные на Python, обычно намного короче таких же программ\n", + "на С, С++ или Java по нескольким причинам. \n", + "1) Типы данных высокого уровня позволяют записывать сложные операции в одну \n", + "строку. \n", + "2) Группировка операторов выполняется с помощью отступов, а не с помощью \n", + "скобок в начале и конце блока. \n", + "3) Объявление переменных или аргументов не требуется" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Философия Python\n", + "Основная философия языка кратко изложена в документе \n", + "Zen of Python, в котором \n", + "можно найти такие афоризмы, как:\n", + "1) Красивое лучше, чем уродливое. \n", + "2) Явное лучше, чем неявное. \n", + "3) Простое лучше, чем сложное. \n", + "4) Сложное лучше, чем запутанное. \n", + "5) Читаемость имеет значение. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **Преимущества Python по сравнению с другими языками** \n", + "1. *Простота*\n", + "Python по простоте напоминает «дисциплинированный английский».\n", + "2. *Свободный и открытый исходный код*\n", + "Python распространяется по модели\n", + "FLOSS (Free/Libre and Open Source Software). \n", + "Проще говоря, вы можете открыто распространять \n", + "дубликаты этого продукта, читать его исходный код, \n", + "вносить в него изменения и использовать его в бесплатных \n", + "проектах\n", + "3. *Высокоуровневость*\n", + "Язык программирования высокого уровня - это язык, \n", + "в котором вам не приходится думать о множестве деталей,\n", + "которые нужны при использовании языка \n", + "программирования низкого уровня\n", + "4. *Портативность*\n", + "Портативность означает, что Python можно \n", + "использовать на разных типах машин, \n", + "независимо от аппаратных средств \n", + "или ограничений операционной системы. \n", + "Благодаря открытому исходному коду\n", + "Python был перенесен на многие платформы, \n", + "и его можно использовать в Windows, GNU/Linux, \n", + "Macintosh, Solaris, Palm OS, \n", + "PlayStation, Sharp Zaurus, Windows СЕ и PocketPC!\n", + "5. *Интерпретируемость*\n", + "Python не требует компиляции в двоичный код,\n", + "а ваша программа запускается прямо из исходного кода.\n", + "Внутри Python преобразует исходный код в промежуточную \n", + "форму, называемую байт-кодами, затем переводит \n", + "ее на родной язык компьютера \n", + "и запускает.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Интерпретаторы Python\n", + "1. **IPython**\n", + "это альтернативный интерпретатор Python.\n", + "Это интерактивная оболочка, \n", + "которая используется для вычислений на Python. \n", + "В ней гораздо больше полезных \n", + "функций по сравнению с интерпретатором Python,\n", + "используемым по умолчанию. \n", + "2. **CPython**\n", + "Написан на С и Python, CPython можно в какой-то степени считать \n", + "компилятором, поскольку перед интерпретацией \n", + "он преобразует код Python в байт-код. \n", + "В нем используется GIL (глобальная блокировка интерпретатора), \n", + "которая ограничивает возможности интерпретатора, \n", + "поскольку она отключает параллельные \n", + "потоки Python в рамках одного процесса.\n", + "3. **lronPython**\n", + "Это реализация языка программирования \n", + "Python для платформы .NET, в которой используются \n", + "библиотеки Python и .NET. \n", + "IronPython напрямую интегрируется в среду \n", + "разработки Visual Studio.\n", + "4. **Jython**\n", + "Ранее известная как JPython, реализация Jython работает на \n", + "платформе Java. Это сочетание Java и Python преобразует \n", + "код Python в байт-код Java и, следовательно, позволяет запускать код Python на любой машине, на которой установлена JVМ.\n", + "5. **РуРу** - это быстрая и совместимая альтернативная\n", + "реализация языка программирования Python\n", + "интерпретатор Python реализован в RPython, \n", + "который представляет \n", + "собой ограниченное статически типизированное подмножество\n", + "языка программирования Python\n", + "благодаря JIT-компилятору РуРу поддерживает\n", + "серверные части С, CLI и NM. Основная цель РуРу - обеспечить \n", + "максимальную \n", + "совместимость с эталонной реализацией CPython и в то же \n", + "время увеличить производительность.\n", + "6. **PythonNet**\n", + "Позволяет выполнить почти бесшовную интеграцию \n", + "Python с .NET CLR. При использовании вместе с Mono, \n", + "PythonNet позволяет встроенным в операционные\n", + "системы установкам Python (кроме \n", + "Windows) работать в среде .NET. PythonNet можно\n", + "использовать совместно с IronPython без каких-либо проблем. \n", + "7. **Stackless Python**\n", + "Stackless Python написан с использованием С и Python\n", + "Самая важная особенность Stackless Python - это наличие \n", + "микропотоков. \n", + "Эта возможность помогает избежать \n", + "значительной части накладных: расходов, \n", + "связанных с обычными \n", + "потоками операционной системы. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### **Объектная ориентированность**\n", + "Python поддерживает процедурно-ориентированное \n", + "программирование, а также \n", + "объектно-ориентированное программирование.\n", + "В Python очень мощный, но упрощенный\n", + "стиль объектно-ориентированного \n", + "программирования, особенно по сравнению\n", + "с такими крупными языками, как С++ \n", + "или Java.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### **Расширяемость**\n", + "Python легко расширяется с помощью кода C/C++/Java и легко встраивается в приложения." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### **Встраиваемость**\n", + "Код Python можно встраивать в программы на С/С++" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### **Внушительные библиотеки**\n", + "Стандартная библиотека Python,\n", + "которую обычно упоминают как одну из сильнейших \n", + "сторон этого языка, содержит инструменты,\n", + "подходящие для огромного множества задач.\n", + "По состоянию на март 20 18 г. официальный репозиторий для стороннего программного обеспечения Python под названием PyPI (Python Package lndex) содержал \n", + "более 1 30 ООО пакетов с широким набором функций,\n", + "вот некоторые из них:\n", + "- графические пользовательские интерфейсы; \n", + "- веб-фреймворки; \n", + "- мультимедиа; \n", + "- базы данных; \n", + "- сети; \n", + "- фреймворки тестирования; \n", + "- автоматизация; \n", + "- парсинг веб-страниц; \n", + "- документация; \n", + "- системное администрирование; \n", + "- научные вычисления; \n", + "- обработка текста; \n", + "- обработка изображений. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Версии Python**\n", + "- Python 2 \n", + "Вышел в конце 2000х, появились документы РЕР (Python Enhancement Proposal),в Python 2 появилось множество других функциональностей, например сборщик мусора\n", + "с обнаружением циклов для автоматизации\n", + "управления памятью, расширенная поддержка \n", + "Unicode для стандартизации символов и списочные включения.\n", + "- Python 2. 7\n", + "После выпуска Python 3.0 в 2008 г., 3 июля 20 10 г. вышел Python 2.7, который планировался как последний выпуск в линейке версий 2.х. Целью Python 2. 7 было облегчить пользователям Python 2.х переход на Python 3 и предоставить совместимость между этими версиями.\n", + "- Python 3 \n", + "Эта версия языка в настоящее время \n", + "находится в разработке.\n", + "Основное внимание при разработке Python 3 \n", + "уделялось очистке кодовой базы и\n", + "устранению избыточности, чтобы для каждой \n", + "задачи существовал лишь один способ ее выполнения.\n", + "К основным изменениям \n", + "в Python 3 .0 можно отнести превращение \n", + "оператора print во встроенную функцию, \n", + "улучшение методики деления целых чисел и \n", + "расширение поддержки Unicode\n", + "На данный момент 339 из 360 наиболее популярных \n", + "пакетов поддерживаются в Python 3." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **Дистрибутив Anaconda**\n", + "Это самый простой способ \n", + "выполнять анализ данных с помощью языков\n", + "Python/R и машинное обучение \n", + "в Linux, Windows и MacOS. У дистрибутива больше\n", + "11 миллионов пользователей \n", + "по всему миру, он является отраслевым\n", + "стандартом в области разработки, тестирования и \n", + "машинного обучения и позволяет специалистам по данным: \n", + "1. быстро загрузить более 1 500 пакетов Python/R, предназначенных для задач анализа данных; \n", + "2. управлять библиотеками, зависимостями и средами с помощью Conda; \n", + "3. разрабатывать и обучать модели машинного обучения и глубокого обучения \n", + "с помощью пакетов Scikit-leam, TensorF\\ow и Theano; \n", + "4. выполнять эффективный и масштабируемый анализ данных с помощью Dask, \n", + "NumPy, Pandas и Numba;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Jupyter Notebook**\n", + "Этот редактор расширяет консольный подход к интерактивным вычислениям в качественно новом направлении и сконструирован как веб-приложение, подходящее \n", + "для записи всего вычислительного процесса: разработки, документирования и выполнения кода, а также передачи результатов. Jupyter Notebook объединяет в себе \n", + "два компонента: \n", + "1. веб-приложение - инструмент на основе браузера, \n", + "предназначенный для интерактивного создания документов,\n", + "сочетающий в себе пояснительный текст, \n", + "математические вычисления и мультимедийный вывод результатов; \n", + "2. документы Notebook, содержащие\n", + "все видимое в веб-браузере, включая входные \n", + "и выходные данные вычислений, пояснительный текст, математические данные, \n", + "изображения и мультимедийные представления объектов." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Упражнения**\n", + "Ответьте на вопросы\n", + "1. Python - это программное обеспечение с открытым исходным кодом. Это то \n", + "же самое, что и бесплатное ПО? Да, а так же с открытым исходным \n", + "кодом означает, что можно добавлять свои модули/функции в ПО.\n", + "2. У всех ли бесплатных программ открытый исходный код? А если нет, то в чем \n", + "разница? Как упоминалась выше, открытый исходный код - это код который полностью\n", + "доступен в сети, т.е мы сможем найти его в Github. Может быть и такое,\n", + "что приложение просто бесплатно в использовании, но код закрытый. \n", + "3. Python поддерживает динамическую типизацию. \n", + "Что это такое? Это значит, что перед тем как объявить\n", + "переменную не обязательно указывать тип данных.\n", + "4. Назовите 5 самых популярных языков \n", + "программирования для специалистов по \n", + "анализу данных\n", + " - Python, R, C++,SQL,Scala.\n", + "5. В чем заключается преимущество Python по сравнению с языком С? \n", + "Преимущество заключается в простоте синтаксиса, высокоуровнестью \n", + "и так как он прост , значит большиство разработчиков ПО будут писать пакеты,\n", + "библиотеки для python.\n", + "6. Python портативен. Что в этом контексте \n", + "означает «портативность»? \n", + "Можно использовать на разных ОС, для написания программ IOT.\n", + "7. В чем разница между «расширяемым» и «встраиваемым» языком?\n", + "Расширяемый - можно дописывать свои модули и функции.\n", + "Встраиваемый - можно встроить код на других ЯП.\n", + "8. В чем смысл IDE? Чем она отличается от командной строки? \n", + "Помогает писать код качественно, без лишних багов. Его придумали, \n", + "чтобы облегчить работу программистам. Он подсвечивает разными \n", + "цветами код, чтобы легко ориентироваться. Сохранять код и запускать.\n", + "9. Как открыть существующий документ Jupyter Notebook? \n", + "Чем эта процедура отличается от открытия РDF-файла или текстового файла?\n", + "Когда открываем существующий документ Jupyter Notebook,\n", + "работает один интерактивный сеанс, подключенный к ядру,\n", + "которое будет выполнять пользовательский \n", + "код и возвращать результаты\n", + "10. В чем разница между «ячейками разметки Markdown» и «ячейками кода» \n", + "в Jupyter Notebook? Для чего они нужны?\n", + "Markdown - пишем разъяснение кода, а в ячейку кода сам код. \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **Правда или ложь**\n", + "1. Ложь\n", + "2. Правда\n", + "3. Ложь\n", + "4. Ложь\n", + "5. Ложь\n", + "6. Правда\n", + "7. Ложь\n", + "8. Правда\n", + "9. Правда\n", + "10. Ложь" + ] + } + ], + "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.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Python/made-easy/Python/made-easy/chapter_2_intro_to_python.py b/Python/made-easy/Python/made-easy/chapter_2_intro_to_python.py new file mode 100644 index 00000000..dfe26b0f --- /dev/null +++ b/Python/made-easy/Python/made-easy/chapter_2_intro_to_python.py @@ -0,0 +1,299 @@ +"""Chapter 2 notes for Made easy.""" + +# *Python* - это интерпретируемый высокоуровневый язык +# программирования общего назначения с открытым исходным кодом. + +# Python был создан Гвидо ван Россумом +# и впервые выпущен в 1991 году. +# Он поддерживает несколько парадигм программирования, +# включая структурное ( особенно процедурное) +# объектно-ориентированное и функциональное программирование. +# +# Это простой в освоении и очень мощный язык программирования . +# Элегантный синтаксис и динамическая типизация +# Python вместе с его +# интерпретируемостью делают его идеальным языком +# для написания сценариев и +# быстрой разработки приложений во многих областях +# и на множестве платформ + +# #### История появления языка +# Язык Python был придуман в конце 1980-х гг. Гвидо ван Россумом, сотрудником +# Centrum Wiskunde & Infonnatica (CWI) в Нидерландах, как преемник языка АВС. +# Его реализация началась в декабре 1989 г. +# Ван Россум был ведущим разработчиком +# Python до 12 июля 20 18 г., после чего ушел в +# «отпуск на неопределенный срок» и +# сложил с себя обязательства «пожизненного самоизбранного диктатора +# в королевстве Python. +# +# 16 октября 2000 r. был выпущен Python 2.0, +# в котором появилось множество новых +# базовых функций, включая сборщик мусора +# с обнаружением циклических ссылок и +# поддержку Unicode. +# +# 3 декабря 2008 r. бьш выпущен Python 3 .0. +# Это была сильно измененная версия +# языка, не имеющая полной обратной совместимости. +# В январе 2017 r. Google +# объявила о работе над транс-компилятором из Python 2. 7 в +# Go для повышения производительности при параллельных нагрузках. +# +# Язык назван в честь шоу на канале ВВС «Летающий цирк Монти Пайтона» +# (Monty Python's Flying Circus) и со змеями никак не связан +# + +# #### Python и другие языки программирования +# Python позволяет писать программы компактно и читабельно. +# Программы, написанные на Python, обычно намного короче таких же программ +# на С, С++ или Java по нескольким причинам. +# 1) Типы данных высокого уровня позволяют записывать сложные операции в одну +# строку. +# 2) Группировка операторов выполняется с помощью отступов, а не с помощью +# скобок в начале и конце блока. +# 3) Объявление переменных или аргументов не требуется + +# #### Философия Python +# Основная философия языка кратко изложена в документе +# Zen of Python, в котором +# можно найти такие афоризмы, как: +# 1) Красивое лучше, чем уродливое. +# 2) Явное лучше, чем неявное. +# 3) Простое лучше, чем сложное. +# 4) Сложное лучше, чем запутанное. +# 5) Читаемость имеет значение. + +# ## **Преимущества Python по сравнению с другими языками** +# 1. *Простота* +# Python по простоте напоминает «дисциплинированный английский». +# 2. *Свободный и открытый исходный код* +# Python распространяется по модели +# FLOSS (Free/Libre and Open Source Software). +# Проще говоря, вы можете открыто распространять +# дубликаты этого продукта, читать его исходный код, +# вносить в него изменения и использовать его в бесплатных +# проектах +# 3. *Высокоуровневость* +# Язык программирования высокого уровня - это язык, +# в котором вам не приходится думать о множестве деталей, +# которые нужны при использовании языка +# программирования низкого уровня +# 4. *Портативность* +# Портативность означает, что Python можно +# использовать на разных типах машин, +# независимо от аппаратных средств +# или ограничений операционной системы. +# Благодаря открытому исходному коду +# Python был перенесен на многие платформы, +# и его можно использовать в Windows, GNU/Linux, +# Macintosh, Solaris, Palm OS, +# PlayStation, Sharp Zaurus, Windows СЕ и PocketPC! +# 5. *Интерпретируемость* +# Python не требует компиляции в двоичный код, +# а ваша программа запускается прямо из исходного кода. +# Внутри Python преобразует исходный код в промежуточную +# форму, называемую байт-кодами, затем переводит +# ее на родной язык компьютера +# и запускает. +# + +# ### Интерпретаторы Python +# 1. **IPython** +# это альтернативный интерпретатор Python. +# Это интерактивная оболочка, +# которая используется для вычислений на Python. +# В ней гораздо больше полезных +# функций по сравнению с интерпретатором Python, +# используемым по умолчанию. +# 2. **CPython** +# Написан на С и Python, CPython можно в какой-то степени считать +# компилятором, поскольку перед интерпретацией +# он преобразует код Python в байт-код. +# В нем используется GIL (глобальная блокировка интерпретатора), +# которая ограничивает возможности интерпретатора, +# поскольку она отключает параллельные +# потоки Python в рамках одного процесса. +# 3. **lronPython** +# Это реализация языка программирования +# Python для платформы .NET, в которой используются +# библиотеки Python и .NET. +# IronPython напрямую интегрируется в среду +# разработки Visual Studio. +# 4. **Jython** +# Ранее известная как JPython, реализация Jython работает на +# платформе Java. Это сочетание Java и Python преобразует +# код Python в байт-код Java и, следовательно, позволяет запускать код Python на любой машине, на которой установлена JVМ. +# 5. **РуРу** - это быстрая и совместимая альтернативная +# реализация языка программирования Python +# интерпретатор Python реализован в RPython, +# который представляет +# собой ограниченное статически типизированное подмножество +# языка программирования Python +# благодаря JIT-компилятору РуРу поддерживает +# серверные части С, CLI и NM. Основная цель РуРу - обеспечить +# максимальную +# совместимость с эталонной реализацией CPython и в то же +# время увеличить производительность. +# 6. **PythonNet** +# Позволяет выполнить почти бесшовную интеграцию +# Python с .NET CLR. При использовании вместе с Mono, +# PythonNet позволяет встроенным в операционные +# системы установкам Python (кроме +# Windows) работать в среде .NET. PythonNet можно +# использовать совместно с IronPython без каких-либо проблем. +# 7. **Stackless Python** +# Stackless Python написан с использованием С и Python +# Самая важная особенность Stackless Python - это наличие +# микропотоков. +# Эта возможность помогает избежать +# значительной части накладных: расходов, +# связанных с обычными +# потоками операционной системы. +# + +# #### **Объектная ориентированность** +# Python поддерживает процедурно-ориентированное +# программирование, а также +# объектно-ориентированное программирование. +# В Python очень мощный, но упрощенный +# стиль объектно-ориентированного +# программирования, особенно по сравнению +# с такими крупными языками, как С++ +# или Java. +# + +# #### **Расширяемость** +# Python легко расширяется с помощью кода C/C++/Java и легко встраивается в приложения. + +# #### **Встраиваемость** +# Код Python можно встраивать в программы на С/С++ + +# #### **Внушительные библиотеки** +# Стандартная библиотека Python, +# которую обычно упоминают как одну из сильнейших +# сторон этого языка, содержит инструменты, +# подходящие для огромного множества задач. +# По состоянию на март 20 18 г. официальный репозиторий для стороннего программного обеспечения Python под названием PyPI (Python Package lndex) содержал +# более 1 30 ООО пакетов с широким набором функций, +# вот некоторые из них: +# - графические пользовательские интерфейсы; +# - веб-фреймворки; +# - мультимедиа; +# - базы данных; +# - сети; +# - фреймворки тестирования; +# - автоматизация; +# - парсинг веб-страниц; +# - документация; +# - системное администрирование; +# - научные вычисления; +# - обработка текста; +# - обработка изображений. +# + +# ### **Версии Python** +# - Python 2 +# Вышел в конце 2000х, появились документы РЕР (Python Enhancement Proposal),в Python 2 появилось множество других функциональностей, например сборщик мусора +# с обнаружением циклов для автоматизации +# управления памятью, расширенная поддержка +# Unicode для стандартизации символов и списочные включения. +# - Python 2. 7 +# После выпуска Python 3.0 в 2008 г., 3 июля 20 10 г. вышел Python 2.7, который планировался как последний выпуск в линейке версий 2.х. Целью Python 2. 7 было облегчить пользователям Python 2.х переход на Python 3 и предоставить совместимость между этими версиями. +# - Python 3 +# Эта версия языка в настоящее время +# находится в разработке. +# Основное внимание при разработке Python 3 +# уделялось очистке кодовой базы и +# устранению избыточности, чтобы для каждой +# задачи существовал лишь один способ ее выполнения. +# К основным изменениям +# в Python 3 .0 можно отнести превращение +# оператора print во встроенную функцию, +# улучшение методики деления целых чисел и +# расширение поддержки Unicode +# На данный момент 339 из 360 наиболее популярных +# пакетов поддерживаются в Python 3. + +# ## **Дистрибутив Anaconda** +# Это самый простой способ +# выполнять анализ данных с помощью языков +# Python/R и машинное обучение +# в Linux, Windows и MacOS. У дистрибутива больше +# 11 миллионов пользователей +# по всему миру, он является отраслевым +# стандартом в области разработки, тестирования и +# машинного обучения и позволяет специалистам по данным: +# 1. быстро загрузить более 1 500 пакетов Python/R, предназначенных для задач анализа данных; +# 2. управлять библиотеками, зависимостями и средами с помощью Conda; +# 3. разрабатывать и обучать модели машинного обучения и глубокого обучения +# с помощью пакетов Scikit-leam, TensorF\ow и Theano; +# 4. выполнять эффективный и масштабируемый анализ данных с помощью Dask, +# NumPy, Pandas и Numba; + +# ### **Jupyter Notebook** +# Этот редактор расширяет консольный подход к интерактивным вычислениям в качественно новом направлении и сконструирован как веб-приложение, подходящее +# для записи всего вычислительного процесса: разработки, документирования и выполнения кода, а также передачи результатов. Jupyter Notebook объединяет в себе +# два компонента: +# 1. веб-приложение - инструмент на основе браузера, +# предназначенный для интерактивного создания документов, +# сочетающий в себе пояснительный текст, +# математические вычисления и мультимедийный вывод результатов; +# 2. документы Notebook, содержащие +# все видимое в веб-браузере, включая входные +# и выходные данные вычислений, пояснительный текст, математические данные, +# изображения и мультимедийные представления объектов. + +# ### **Упражнения** +# Ответьте на вопросы +# 1. Python - это программное обеспечение с открытым исходным кодом. Это то +# же самое, что и бесплатное ПО? Да, а так же с открытым исходным +# кодом означает, что можно добавлять свои модули/функции в ПО. +# 2. У всех ли бесплатных программ открытый исходный код? А если нет, то в чем +# разница? Как упоминалась выше, открытый исходный код - это код который полностью +# доступен в сети, т.е мы сможем найти его в Github. Может быть и такое, +# что приложение просто бесплатно в использовании, но код закрытый. +# 3. Python поддерживает динамическую типизацию. +# Что это такое? Это значит, что перед тем как объявить +# переменную не обязательно указывать тип данных. +# 4. Назовите 5 самых популярных языков +# программирования для специалистов по +# анализу данных +# - Python, R, C++,SQL,Scala. +# 5. В чем заключается преимущество Python по сравнению с языком С? +# Преимущество заключается в простоте синтаксиса, высокоуровнестью +# и так как он прост , значит большиство разработчиков ПО будут писать пакеты, +# библиотеки для python. +# 6. Python портативен. Что в этом контексте +# означает «портативность»? +# Можно использовать на разных ОС, для написания программ IOT. +# 7. В чем разница между «расширяемым» и «встраиваемым» языком? +# Расширяемый - можно дописывать свои модули и функции. +# Встраиваемый - можно встроить код на других ЯП. +# 8. В чем смысл IDE? Чем она отличается от командной строки? +# Помогает писать код качественно, без лишних багов. Его придумали, +# чтобы облегчить работу программистам. Он подсвечивает разными +# цветами код, чтобы легко ориентироваться. Сохранять код и запускать. +# 9. Как открыть существующий документ Jupyter Notebook? +# Чем эта процедура отличается от открытия РDF-файла или текстового файла? +# Когда открываем существующий документ Jupyter Notebook, +# работает один интерактивный сеанс, подключенный к ядру, +# которое будет выполнять пользовательский +# код и возвращать результаты +# 10. В чем разница между «ячейками разметки Markdown» и «ячейками кода» +# в Jupyter Notebook? Для чего они нужны? +# Markdown - пишем разъяснение кода, а в ячейку кода сам код. +# +# + +# ### **Правда или ложь** +# 1. Ложь +# 2. Правда +# 3. Ложь +# 4. Ложь +# 5. Ложь +# 6. Правда +# 7. Ложь +# 8. Правда +# 9. Правда +# 10. Ложь diff --git a/code_review/dir b/code_review/dir new file mode 100644 index 00000000..e69de29b diff --git a/docs/welcome/intro_eng.md b/docs/welcome/intro_eng.md deleted file mode 100644 index 44668739..00000000 --- a/docs/welcome/intro_eng.md +++ /dev/null @@ -1,89 +0,0 @@ -### Register Accounts - -1. **GitHub** - - Go to [GitHub](https://github.com/). - - Click on "Sign up" and follow the instructions to create an account. - - Once registered, share your GitHub profile link in the chat: [Telegram Chat](https://t.me/c/1937296927/3602). - -2. **Kaggle** - - Visit [Kaggle](https://www.kaggle.com/). - - Click on "Sign up" and create an account. - - Confirm your phone number on Kaggle (RELEVANT FOR RUSSIA) [Video Guide](https://youtu.be/fcBOlOl__T0) - - Use this number for Kaggle: [365sms.ru](https://365sms.ru/) - - - Obtain Contributor Status on Kaggle: [Video Guide](https://youtube.com/shorts/A_EtBko0T3U?feature=shared) - - Share your Kaggle profile link in the chat: [Telegram Chat](https://t.me/c/1937296927/832). - -3. **ODS.AI** - - Go to [ODS.AI](https://ods.ai/). - - Register for an account. - - Share your ODS.AI profile link in the chat: [Telegram Chat](https://t.me/c/1937296927/832). - -### Download and Install Software - -1. **GitHub Desktop** - - Download from [GitHub Desktop](https://github.com/desktop/desktop). - - Follow the installation instructions for your operating system. - -2. **Cursor** - - Download from [Cursor](https://github.com/getcursor/cursor). - - Install it according to the provided instructions. - -3. **Python (CPython)** - - Download from [CPython](https://github.com/python/cpython). - - Follow the installation guide for your platform. - -4. **Git for Windows** - - Download from [Git for Windows](https://github.com/git-for-windows/git). - - Install it using the setup instructions. - -5. **Conda** - - Download from [Conda](https://github.com/conda/conda). - - Follow the installation instructions for your system. - -### Additional Resources - -- **Jamboard for Learning** - - Watch the video guide: [YouTube](https://youtu.be/8pwKgbMyfbo) - - Use [Canva](https://www.canva.com/) to create and share Jamboards. - - Send me the link to your Jamboard in a private message. - -### Download the Repository to Your Computer - -### Detailed Instructions - -1. **Star the Repository** - - Make sure you have starred the repository. https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV - ![image](https://github.com/user-attachments/assets/aa4e7946-d65f-4f5f-91a2-84a1dc3bdcb4) - -2. **Join the Team** - - If you are not listed in the [Senatorov Team](https://github.com/orgs/SENATOROVAI/teams/senatorov-team), send a message in the chat [here](https://t.me/c/1937296927/3602) with: - - Your Telegram username - - Your GitHub profile link - -3. **Create a New Branch** - - Go to the [branches page](https://github.com/SENATOROVAI/GithubLogin-Data-Science-For-Beginners-from-scratch-SENATOROV/branches) and create a new branch named after your [GitHub username](https://github.com/settings/admin). - - Example ![image](https://github.com/user-attachments/assets/09181e62-84f8-4992-86a4-13394c7a014a) - -4. **Clone the Repository** - - Download the repository to your local machine using any convenient method. I recommend GitHub Desktop. - Screenshot 2024-11-27 at 4 01 19 AM - -5. **Switch Branches** - - Ensure you switch to your newly created branch in GitHub Desktop. - ![image](https://github.com/user-attachments/assets/82f6acc8-3e4f-4abd-bc9b-0514a47056f4) - Screenshot 2024-11-27 at 4 26 31 AM - -### Submitting Changes - -1. **Update Branches** - - If requested in the GitHub chat, update your branch by creating a pull request from the `main` branch to your branch. Use the [compare page](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/compare) to select your branch and initiate the pull request. - ![image](https://github.com/user-attachments/assets/e027f42e-a66f-42db-a52a-3a6319903ee8) - -### Ongoing Learning - -- All further learning and contributions will be conducted within this repository. - -By following these structured steps, you can ensure a smooth contribution process and stay aligned with the repository's guidelines. - -If you have any questions or need further assistance, feel free to ask! diff --git a/docs/welcome/intro_ru.md b/docs/welcome/intro_ru.md deleted file mode 100644 index 07b60a9b..00000000 --- a/docs/welcome/intro_ru.md +++ /dev/null @@ -1,350 +0,0 @@ -![photo_2024-01-16_20-54-32](https://github.com/user-attachments/assets/fe349ddc-47df-40f7-80b9-5758c15373c7) - ---- - -

Добро пожаловать в команду SENATOROVAI!

- -- Выполни инструкцию ниже, если возникнут трудности смело пиши: https://t.me/c/1937296927/3602 - ---- - -

Оглавление

- - ---- - -### Расскажи о себе, прошлый опыт, цель обучения, где живешь, лучше пиши на английском, коллеги англоязычные, русский их не родной, - - Сообщение отправь сюда [Тык](https://t.me/c/1937296927/3181) - - Выбери [план обучения](https://t.me/c/1937296927/26659/29165) ---- - -### Регистрация аккаунтов - -1. **GitHub** - - Перейдите на [GitHub](https://github.com/). - - Нажмите "Sign up" и следуйте инструкциям для создания аккаунта. - - После регистрации поделитесь ссылкой на ваш профиль GitHub в чате: [Telegram Chat](https://t.me/c/1937296927/3602), в посте добавьте @ВашЮзерНеймТелеграм хэштег #githubaccount - - Настройте Github: - - подписаться на коллег https://github.com/orgs/SENATOROVAI/teams/senatorov-team - - оформить гитхаб https://www.youtube.com/watch?v=pm17VwdJ6UI - - выберите шаблон https://github.com/abhisheknaiidu/awesome-github-profile-readme - - Повторите 5 пунктов - - Example - ---- - -2. **Kaggle** - - [Что такое КЭГГЛ?](https://youtu.be/wL9zQczbHRs) - - Посетите [Kaggle](https://www.kaggle.com/). - - Нажмите "Sign up" и создайте аккаунт. - - Подтвердите номер телефона на Kaggle (АКТУАЛЬНО ДЛЯ РФ) [Видео инструкция](https://youtu.be/fcBOlOl__T0) - - Используйте этот номер для Kaggle: [365sms.ru](https://365sms.ru/) - - - Получите статус контрибьютора на Kaggle: [Видео инструкция](https://youtube.com/shorts/A_EtBko0T3U?feature=shared) - - Подпишитесь на коллег https://t.me/c/1937296927/832/21039 - - Заполните профиль - - Example - - - Поделитесь ссылкой на ваш профиль Kaggle в чате: [Telegram Chat](https://t.me/c/1937296927/832). в посте добавьте @ВашЮзерНеймТелеграм хэштег #kaggleaccount - - [Загрузка ноутбуков на Kaggle](https://youtu.be/Kn9ZcXlCApw) - ---- - -4. **ODS.AI** - - Перейдите на [ODS.AI](https://ods.ai/). - - Зарегистрируйтесь для создания аккаунта. - - Поделитесь ссылкой на ваш профиль ODS.AI в чате: [Telegram Chat](https://t.me/c/1937296927/832). в посте добавьте @ВашЮзерНеймТелеграм хэштег #odsaccount - ---- - -### Скачивание и установка программ - -1. **GitHub Desktop** - - Скачайте с [GitHub Desktop](https://github.com/desktop/desktop). - - Следуйте инструкциям по установке для вашей операционной системы. - ---- - -2. **Cursor** - - Скачайте с [Cursor](https://github.com/getcursor/cursor). - - Установите согласно предоставленным инструкциям. - - Example - - (установить плагины): - - Example - - - - ms-python.pylint - - ms-python.flake8 - - ms-python.mypy-type-checker - - matangover.mypy - - ms-pyright.pyright - - ms-python.black-formatter - - njpwerner.autodocstring - - njqdev.vscode-python-typehint - - KevinRose.vsc-python-indent - - mintlify.document - - streetsidesoftware.code-spell-checker - - eamodio.gitlens - - ms-toolsai.jupyter - - ms-vsliveshare.vsliveshare - - njqdev.vscode-python-typehint - - EricSia.pythonsnippets3 - - ms-pyright.pyright - - congyiwu.vscode-jupytext - - streetsidesoftware.code-spell-checker-russian - - Активация русского языка - - Commands (use F1 or View -> Command Palette): - - Enable Russian Spell Checker Dictionary - Enable Russian Spell Checker Dictionary in Workspace - - Добавить слово в словарь => наводим на слово и нажимаем ctrl+. потом выбираем add to user settings - - Настройте [курсор(vscode на видео) к работе](https://www.youtube.com/watch?v=Si9MfV8uJ-0) - - Кнопка "vs code settings" ,для wrap и т.д. Example - - - **Посмотрите [возможности курсора](https://www.youtube.com/watch?v=hjBCRVYE1as&feature=youtu.be)** ---- - -3. **Python (CPython)** - - Скачайте с [CPython](https://github.com/python/cpython). - - Следуйте руководству по установке для вашей платформы. - ---- - -4. **Git for Windows** - - Скачайте с [Git for Windows](https://github.com/git-for-windows/git). - - Установите, следуя инструкциям по настройке. - ---- - -5. **Conda** - - Скачайте с [Conda](https://github.com/conda/conda). - - Следуйте инструкциям по установке для вашей системы. - ---- - -- **Джамборд для учёбы** - - Посмотрите видеоинструкцию: [YouTube](https://youtu.be/8pwKgbMyfbo) - - Используйте [Canva](https://www.canva.com/) для создания и обмена джамбордами. - - Скиньте мне в личку ссылку на ваш джамборд. - ---- - -### Скачайте репозиторий на свой компьютер. - -1. **Поставьте звезду репозиторию** - - Убедитесь, что вы поставили звезду репозиторию, https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV -![image](https://github.com/user-attachments/assets/aa4e7946-d65f-4f5f-91a2-84a1dc3bdcb4) - ---- - -2. **Присоединитесь к команде** - - Если вас нет в списке [команды Senatorov](https://github.com/orgs/SENATOROVAI/teams/senatorov-team), отправьте сообщение в чат [здесь](https://t.me/c/1937296927/3602) с: - - Вашим логином в Telegram - - Ссылкой на ваш профиль GitHub - - в посте добавьте хэштеги #githubaccount #senatorovteam - ---- - -1. **Создайте новую ветку** - - Перейдите на [страницу веток](https://github.com/SENATOROVAI/GithubLogin-Data-Science-For-Beginners-from-scratch-SENATOROV/branches) и создайте новую ветку, назвав её вашим [логином GitHub](https://github.com/settings/admin) без СОБАЧКИ @. - -![image](https://github.com/user-attachments/assets/99f05e36-f698-486a-8f95-50225043fb22) - -- Пример ![image](https://github.com/user-attachments/assets/09181e62-84f8-4992-86a4-13394c7a014a) -4. **Клонируйте репозиторий** - - Скачайте репозиторий на ваш локальный компьютер, нажимаем code->open with Github Desktop - -Screenshot 2024-11-27 at 4 26 31 AM - - -4.1 **(опционально)Клонирование конкретной ветки** - -- откройте терминал/командную строку, перейдите в ваш репозиторий с помощью команды ``cd Documents/github/`` -- `` git clone --branch название-ветки https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV.git `` -- ``cd Data-Science-For-Beginners-from-scratch-SENATOROV`` -- ``cursor .`` - -5. **Переключите ветки** - - (опционально) переключите ветку в GitHub Desktop, вы можете вообще удалить github desktop и [отправлять коммиты через курсор](https://youtu.be/Si9MfV8uJ-0?si=u-VwMWhK-BNtJVuf&t=382), как вам удобно. - Example - -5.1 **Откройте курсор в github desktop и переключите в нем ветки** - Example -Screenshot 2024-11-27 at 4 26 31 AM - -6. **Введите команды в терминал** - - Откройте терминал и убедитесь что там написано Data-Science-For-Beginners-from-scratch-SENATOROV - Example - - ![изображение](https://github.com/user-attachments/assets/6145231b-a5b4-488b-967a-5d4ed9b995a5) - - Затем вставьте 4 команды ниже, в терминал, по очереди, и нажмите каждый раз Enter - - ``git init `` - - ``pip install pre-commit`` - - ``pre-commit install`` - - ``pre-commit run --all-files`` - - - Документация по линтерам: - - Pylint https://pylint.pycqa.org - - Pydocstyle https://docs.astral.sh/ruff/rules/#pydocstyle-d - - Flake8 https://flake8.pycqa.org/en/latest/index.html - - Mypy https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html#variables - -7. **Пришлите скриншот вашего терминала** - - Сделайте полный скриншот вашего терминала на весь экран и пришлите в [чат](https://t.me/c/1937296927/3602) пример скриншота - - Example - -- Если у вас есть локальный репозиторий на компьютере с вашими файлами, скопируйте ваши файлы из documents/github/ваш_репозиторий, в новый репозиторий Documents/github/Data-Science-For-Beginners-from-scratch-SENATOROV - -7.1 Посмотрите [процесс принятие и отправки коммитов и работе с линтером](https://youtu.be/hW_7hodGxVU?si=tCEVs00xGt2q61eW) создайте файл log.ipynb и отправьте коммит как написано в пункте 7.2, а не как в видео через Github Desktop. - -7.2 Затрекайте свои временные изменения в коммит, нажмите "+" чтобы внести изменения в трекинг систему гит -- Список Changes должен быть пустым -Screenshot 2024-11-28 at 1 21 12 AM - -- Дополнительно можете ещё раз убедиться что всё готово к слиянию веток, введите в терминал:``git status``, список файлов должен быть зелёный -Screenshot 2024-11-29 at 11 29 54 PM - -- чтобы сделать пустую строку между тайтл и дескрипшен жмём shift+enter, если в коммите участвуют системные файлы, которые я добавил, значит пишете, "update system files", отправьте коммит нажатием на кнопку **commit&sync** -Screenshot 2024-11-29 at 11 41 12 PM - -- заходим в свой коммит: -https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/commits/ИМЯ-ВЕТКИ/, ИМЯ-ВЕТКИ меняйте на ваш логин гитхаб, вставляете ссылку в url, и копируете ссылку на последний коммит -![image](https://github.com/user-attachments/assets/484781f4-d994-49d1-a9da-b256f5589847) -- присылаем ссылку на коммит сюда https://t.me/c/1937296927/4496 - -8. **Ознакомиться с системой штрафов** - - [Штрафы](https://t.me/c/1937296927/11810/11811) - -9. **Ознакомиться с системой бонусов** - - [Бонусы](https://t.me/c/1937296927/25305/25306) - -10. **Ознакомиться с системой помощи в комьюнити** - - [Инструкция помощь](https://t.me/c/1937296927/2415/23729) - - [Практика запроса помощи или сообщения о проблеме](https://youtu.be/wR3gXOiRm10) - -11. **Ознакомиться с отменой занятий** - - [Отмена занятий](https://t.me/c/1937296927/26659/27648) -12. **Ознакомиться с программой обучения** - - [Программа обучения](https://t.me/c/1937296927/10385/14516) -13. **Важные анонсы крайте нежелательно пропускать** - - [Критические уведомления](https://t.me/c/1937296927/26659) -14. **Чат HomeWork** - - если я ставлю собачку на вас в этом чате значит вам пришла домашняя работа [чат](https://t.me/c/1937296927/4496) - - после выполнения ДЗ и отправки коммита вы должны приложить в этот чат ссылку на него -15. **Персональное обращение** - - регулярно проверяйте что вас [не тегнули](https://t.me/c/1937296927/2415/25595) - - помогайте другим коллегам решать их тикеты и [получайте бонусы](https://t.me/c/1937296927/25305/25306), ищите хэштег #open - Example - -16. **Обязательно сделайте все задания** - - => [Задания](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/issues/2) - -### ПОЗДРАВЛЯЮ! ВЫ ГОТОВЫ К ОБУЧЕНИЮ, Сообщите в [чат](https://t.me/c/1937296927/4496) что сделали intro и я задам вам домашнюю работу. - ---- - -1. ### **update branch** - - Если в чате GitHub вас просят "обновите ветки/update branch", создайте пулреквест из ветки `main` в вашу ветку. Используйте [страницу сравнения](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/compare), чтобы выбрать вашу ветку и инициировать пулреквест. - ![изображение](https://github.com/user-attachments/assets/af405a89-cbe5-4bca-b58e-4a332536e001) - - В title пул реквеста пишите ``update branch`` - ![image](https://github.com/user-attachments/assets/cf31394e-288f-4a53-9730-371585f08fe8) - - Скролим в самый низ и нажимаем зелёную кнопку "merge" - ### Resolve conflicts - - Если возникает конфликт при слиянии, нажимаем "web editor", или "github desktop" - ![изображение](https://github.com/user-attachments/assets/9253262b-f940-47f5-bda9-510ef3a59b6f) - - Нажимаем Resolve - - Устраняем конфликт вручную, путём вырезания ненужных строк - Example - - Нажимаем Mark as resolved - ![изображение](https://github.com/user-attachments/assets/95875526-f125-47c9-91d5-8e9f39ed4dce) - ---- - -2. **Сложный конфликт** - -Screenshot 2024-11-28 at 1 21 12 AM - -### Commit (Переходим в курсор и жмём на клиент гита) -- Затрекайте свои временные изменения в коммит, нажмите "+" чтобы внести изменения в трекинг систему гит -- Список Changes должен быть пустым -Screenshot 2024-11-28 at 1 21 12 AM - -- Дополнительно можете ещё раз убедиться что всё готово к слиянию веток, введите в терминал:``git status``, список файлов должен быть зелёный -Screenshot 2024-11-29 at 11 29 54 PM - -- чтобы сделать пустую строку между тайтл и дескрипшен жмём shift+enter, если в коммите участвуют системные файлы, которые я добавил, значит пишете, "update system files", Отправляем коммит нажатием на кнопку **commit&sync**, и потом делаем merge веток -Screenshot 2024-11-29 at 11 41 12 PM - - - -Example - -- Внизу слева, должна быть написана **ваша ветка, которую вы создали** -- Нажимаем 3 точки, merge - -![изображение](https://github.com/user-attachments/assets/43b1620f-86c6-4679-a4b7-e37d31eeeba4) - -- выбираем из какой ветки будем мержиться, нажимаем на **"origin/main remote branch"**, то есть с той ветки которая лежит на сайте гитхаб, а не ,main которая у вас на компе, поздравляю, вы успешно обновили ветку, но иногда надо устранять конфликты вручную, поэтому если это ваш случай, читайте дальше доку. - -![изображение](https://github.com/user-attachments/assets/89b59451-31e2-4f5a-8333-c7e093cf304f) - -- Нажимаем accept current change , это то что пришло с гитхаба, наши локальные данные удаляться. - -![изображение](https://github.com/user-attachments/assets/ca29e057-fd1b-4b99-b66b-6ac9e5c2bd8e) - -![изображение](https://github.com/user-attachments/assets/49afd7e8-d965-47a9-9254-10b76816bb6e) - -- отдаём коммит, ВЫ УСПЕШНО РЕШИЛИ КОНФЛИКТ И ОБНОВИЛИ ВЕТКУ! - ---- - -### Дальнейшее обучение и портфолио -- [Портфолио](https://youtu.be/CQ3J2nCkBSo?si=Sy8wc6IWHDahz3KY) - -- Все дальнейшее обучение и вклад будут осуществляться в этом репозитории. - -Следуя этим структурированным шагам, вы сможете обеспечить гладкий процесс внесения изменений и оставаться в соответствии с руководящими принципами репозитория. - ---- - -### Check hw -- [Создаёте ишьюс](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/issues), у вас 3 варианта: -- ишьюс-вопрос -- ишьюс-улучшение, если хотите помочь мне улучшить документацию, структуру папок и заработать баллы -- ишьюс-баг -- пишете содержательный тайтл, дескрипшен, запоминаете номер ишьюса, вы его будете вставлять в пул реквест, [инструкция как создать ишьюс](https://youtu.be/wR3gXOiRm10) - -- **Пример** -Screenshot 2024-11-28 at 2 24 08 PM - -- Вы можете попросить чтобы я проверил: - 1) сразу весь файл - 2) блок кода - 3) одну строку, кнопка "Copy permalink" нужно кликнуть на конкретную строку или выделить несколько строк, -Screenshot 2024-11-28 at 1 30 54 PM - - - -- [Открываете пул реквест в ветку main](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/pulls), Тайтл копируем из ишьюс, в дескрипшен пишем Closes #НомерИшьюса, в моём примере это **Closes #35** -Screenshot 2024-11-28 at 1 30 54 PM -Screenshot 2024-11-28 at 1 30 54 PM - -- Присылайте ссылку на ишьюс в https://t.me/c/1937296927/3602, в посте пишете: -- копируете тайтл из ишьюса и добавляете 2 хэштега #open #issues -- Когда я проверю вашу домашку, я пришлю ссылку на ревью, в ответ на ваше сообщение, вам нужно будет поменять статус в посте на #closes - ---- - -Если у вас есть вопросы или нужна дополнительная помощь, не стесняйтесь спрашивать [здесь](https://t.me/c/1937296927/2415)! - - diff --git a/log.ipynb b/log.ipynb new file mode 100644 index 00000000..5de50b13 --- /dev/null +++ b/log.ipynb @@ -0,0 +1,331 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Файл, в котором я веду заметки о пройденных модулях.'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"Файл, в котором я веду заметки о пройденных модулях.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Модуль 1: Введение в математику\n", + "\n", + "\n", + "**Дата:** 12.10.2024\n", + "\n", + "## Основные моменты урока:\n", + "1. Определили цель изучения математики.\n", + "2. Проверили знание школьной математики.\n", + "3. Скачала PyPy и протестировала работу CPython и PyPy.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Модуль 2: Урок о математической индукции\n", + "\n", + "**Дата:** 13.10.2024\n", + "\n", + "## Тема: Математическая индукция\n", + "\n", + "### Основные моменты урока:\n", + "1. **База индукции**\n", + "2. **Индукционный переход**\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Модуль 3: Введение в дифференциальные исчисления\n", + "\n", + "**Дата:** 19.10.2024\n", + "\n", + "## Тема: Введение в дифференциальные исчисления\n", + "\n", + "### Основные моменты урока:\n", + "1. **Понятие числовой последовательности:**\n", + " 1.1. Основные понятия \n", + " 1.2. Бесконечно малые и бесконечно большие последовательности \n", + " 1.3. Предел числовой последовательности \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Модуль, посвященный 4 уроку\n", + "**Дата**: 20.10.24 \n", + "**Тема**: Пределы\n", + "\n", + "## 1. Повторение прошлой темы\n", + "Б.Б и б.м последовательности, что такое числовая последовательность и предел последовательности.\n", + "\n", + "## 2. Прорешанные примеры\n", + "Примеры, связанные с темой пределов. Упражнения для закрепления материала.\n", + "\n", + "## 3. Метод Коши\n", + "Обсуждали метод Коши" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Модуль 5: Скачивание релизов и работа с GitHub\n", + "\n", + "**Дата:** 26.10.2024\n", + "\n", + "## Тема: Как скачивать релиз, как создавать issues и pull request\n", + "1. **Скачивание релиза:**\n", + "2. **Создание issues:**\n", + " - Что такое issue и зачем оно нужно.\n", + " - Как создать новый issue.\n", + " - Важные элементы: заголовок, описание, метки.\n", + "3. **Создание pull request:**\n", + " - Что такое pull request и когда его создавать.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Модуль, посвященный 6 уроку\n", + "### 27.10.2024\n", + "#### Предел функции\n", + "\n", + "1. Определение предела функции по Коши\n", + "2. Замечательные пределы\n", + "3. Первый и второй замечательный предел\n", + "5. Правила Лопиталя\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Модуль, посвященный 7 уроку\n", + "*02.11.2024*\n", + "1. Повторили замечательные пределы\n", + "2. Порядок роста функции\n", + "3. Метод замены переменной в пределе\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Модуль, посвященный 8 уроку\n", + "*03.11.24*\n", + "1. Замечательные эквивалентности в пределах\n", + " Сравнение б.м функции\n", + "2. Непрерывность функции. Точки разрыва. Их классификации \n", + "Как исследовать функцию на непрерывность?\n", + "Односторонние пределы. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Модуль, посвященный 9 уроку\n", + "*09.11.24*\n", + "1. Повторили понятие непрерывности функции и периодичности функции\n", + "2. Точки разрыва и их классификация\n", + " \n", + " -Односторонние пределы\n", + " \n", + " -Точка разрыва первого рода\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Модуль, посвященный 10 уроку\n", + "*10.11.24*\n", + "1. Точки разрыва и их классификация \n", + " \n", + " -Точка разрыва первого рода\n", + "\n", + " -Точки разрыва второго рода\n", + "\n", + " -Практика\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Модуль, посвященный 11 уроку\n", + "*13.11.24*\n", + "- Числовые ряды" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Модуль 12 \n", + "*16.11.24*\n", + "- Прошел экзамен, по пределам" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Модуль 13\n", + "*23.11.2024*\n", + "\n", + "- Теория вероятности.\n", + "1. Совместные и несовместные события.\n", + "Противоположные события. Полная группа событий\n", + "2. Сложение и умножение событий" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Модуль 14\n", + "*24.11.2024*\n", + "\n", + "Комбинаторика\n", + "- Формулы перестановки, сочетания и размещения без повторений\n", + "- Решение задач" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Модуль 15\n", + "*30.11.24*\n", + "- Решение задач" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Module 16\n", + "*01.12.24*\n", + "\n", + "- Introduction to\n", + " Probability Theory\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Module 17\n", + "\n", + "*07.12.24*\n", + "\n", + "- We discussed the further \n", + "study plan" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Module 18\n", + "*08.12.24*\n", + "- Introduction to Machine Learning: Supervised and Unsupervised Learning" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Module 19\n", + "*09.12.24*\n", + "- We started studying linear regression. 𝑦=𝑘𝑥+𝑏\n", + "- We looked at an example with GDP." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Module 20\n", + "*12.12.24*\n", + "- We plotted 5 data points on a graph and created a linear regression model\n", + " \\( y = \\beta_0 + \\beta_1 x \\), where \\( \\beta_0 \\) and \\( \\beta_1 \\) \n", + " are the parameters. We also calculated the residuals \n", + " \\( e_1, e_2, ..., e_5 \\) as the differences between the actual \n", + " \\( y_i \\) values and the predicted \\( \\hat{y}_i \\) values.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Module 21\n", + "*17.12.24*\n", + "- We explored MAE and MSE, delving into the topic of errors. We examined the loss function on a graph, discussed the loss function, and considered the global minimum and the point of extremum." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Module 22\n", + "*19.12.24*\n", + " - Explored the loss function in more detail." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Module 23\n", + "*21.12.24*\n", + "- Covered the concepts of vectors, gradient, and partial derivatives. Examined examples on 3D graphs and discussed the ideas of a local minimum and the antigradient.\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.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/log.py b/log.py new file mode 100644 index 00000000..b873f84e --- /dev/null +++ b/log.py @@ -0,0 +1,153 @@ +"""Файл, в котором я веду заметки о пройденных модулях.""" + +# # Модуль 1: Введение в математику +# +# +# **Дата:** 12.10.2024 +# +# ## Основные моменты урока: +# 1. Определили цель изучения математики. +# 2. Проверили знание школьной математики. +# 3. Скачала PyPy и протестировала работу CPython и PyPy. +# + +# # Модуль 2: Урок о математической индукции +# +# **Дата:** 13.10.2024 +# +# ## Тема: Математическая индукция +# +# ### Основные моменты урока: +# 1. **База индукции** +# 2. **Индукционный переход** +# + +# # Модуль 3: Введение в дифференциальные исчисления +# +# **Дата:** 19.10.2024 +# +# ## Тема: Введение в дифференциальные исчисления +# +# ### Основные моменты урока: +# 1. **Понятие числовой последовательности:** +# 1.1. Основные понятия +# 1.2. Бесконечно малые и бесконечно большие последовательности +# 1.3. Предел числовой последовательности +# + +# # Модуль, посвященный 4 уроку +# **Дата**: 20.10.24 +# **Тема**: Пределы +# +# ## 1. Повторение прошлой темы +# Б.Б и б.м последовательности, что такое числовая последовательность и предел последовательности. +# +# ## 2. Прорешанные примеры +# Примеры, связанные с темой пределов. Упражнения для закрепления материала. +# +# ## 3. Метод Коши +# Обсуждали метод Коши + +# # Модуль 5: Скачивание релизов и работа с GitHub +# +# **Дата:** 26.10.2024 +# +# ## Тема: Как скачивать релиз, как создавать issues и pull request +# 1. **Скачивание релиза:** +# 2. **Создание issues:** +# - Что такое issue и зачем оно нужно. +# - Как создать новый issue. +# - Важные элементы: заголовок, описание, метки. +# 3. **Создание pull request:** +# - Что такое pull request и когда его создавать. +# +# + +# ## Модуль, посвященный 6 уроку +# ### 27.10.2024 +# #### Предел функции +# +# 1. Определение предела функции по Коши +# 2. Замечательные пределы +# 3. Первый и второй замечательный предел +# 5. Правила Лопиталя +# + +# ### Модуль, посвященный 7 уроку +# *02.11.2024* +# 1. Повторили замечательные пределы +# 2. Порядок роста функции +# 3. Метод замены переменной в пределе +# + +# ### Модуль, посвященный 8 уроку +# *03.11.24* +# 1. Замечательные эквивалентности в пределах +# Сравнение б.м функции +# 2. Непрерывность функции. Точки разрыва. Их классификации +# Как исследовать функцию на непрерывность? +# Односторонние пределы. +# + +# ### Модуль, посвященный 9 уроку +# *09.11.24* +# 1. Повторили понятие непрерывности функции и периодичности функции +# 2. Точки разрыва и их классификация +# +# -Односторонние пределы +# +# -Точка разрыва первого рода +# + +# ### Модуль, посвященный 10 уроку +# *10.11.24* +# 1. Точки разрыва и их классификация +# +# -Точка разрыва первого рода +# +# -Точки разрыва второго рода +# +# -Практика +# +# + +# ### Модуль, посвященный 11 уроку +# *13.11.24* +# - Числовые ряды + +# ## Модуль 12 +# *16.11.24* +# - Прошел экзамен, по пределам + +# ### Модуль 13 +# *23.11.2024* +# +# - Теория вероятности. +# 1. Совместные и несовместные события. +# Противоположные события. Полная группа событий +# 2. Сложение и умножение событий + +# ### Модуль 14 +# *24.11.2024* +# +# Комбинаторика +# - Формулы перестановки, сочетания и размещения без повторений +# - Решение задач + +# ### Модуль 15 +# *30.11.24* +# - Решение задач + +# ### Module 16 +# *01.12.24* +# +# - Introduction to +# Probability Theory +# + +# ### Module 17 +# +# *07.12.24* +# +# - We discussed the further +# study plan diff --git a/tests/quiz/quiz_1.txt b/tests/quiz/quiz_1.txt index 3258c5d9..1a1e464b 100644 --- a/tests/quiz/quiz_1.txt +++ b/tests/quiz/quiz_1.txt @@ -4,69 +4,153 @@ Если вы знаете ответы на вопросы из Вашего опыта, то таймкоды из видео не надо указывать и т.д. 1) Как понять, что домашка пришла? +- В чате HomeWork появилось сообщение с моим ником "Прими пулл" 2) Как принять домашку? +- Заходим в кошечку, нажимаем на кнопку Fetch/Pull origin 3) Зачем нужна кнопка history и какие функции появляются при нажатии правой кнопки мыши на коммит? +При нажатий на history появляется меню, которое редлагает набор действий, которые можно выполнить с выбранным коммитом. Вот действия: +- Reset to commit... - возвращает проект к выбранному коммиту, удаляя все изменения после него. +- Checkout commit... - позволяет переключиться на выбранный коммит или создать новую ветку с этого состояния. +- Reorder commit: - меняет порядок коммитов в истории. +- Revert changes in commit: - создает новый коммит, отменяющий изменения из выбранного коммита. +- Create branch from commit: - создает новую ветку, начиная с выбранного коммита. +- Create Tag...: - добавляет метку (tag) к выбранному коммиту. += Cherry-pick commit...: - применяет изменения из одного коммита в текущую ветку. +- Copy SHA: - копирует уникальный идентификатор коммита. +- Copy tag: - копирует имя метки, связанной с коммитом. +- View on GitHub: - открывает выбранный коммит в веб-интерфейсе GitHub. + 3.1) Где брать ссылку на коммит? куда её отправлять? +Нажимаем в разделе history на правую кнопку мыши и View on GitHub, коммит отобразиться в гитхаб, теперь нужно просто копировать url коммита + 4) Что такое файл лога? +Файл, который заполняем в конце каждого урока, должен содержать тему, дату, описание урока. 4.1) Когда нужно его пушить? +После каждого урока 5) Что такое интерпритатор? +Интерпритатор - программа, которая выполняет инструкции, написанные на ЯП например на пайтон.В отличие от компилятора интерпретатор предварительно не переводит ?( компилирует) код в машинный. 6) Где можно выбрать интерпритатор? +Существует 7 интерпретации языка пайтон. Можно скачать в гитхаб. Скопировать путь до exeшника и открыть файл с кодом. Для этого заходим в консоль вставляем путь exeшника и файла с кодом. Либо в VS code выбираем нужный нам интепретатор. 7) Что такое модуль? +Файл, содержащий код на языке Python, который можно импортировать и использовать в других программах. Есть много много модулей, н-р math, os, sys 8) Как создать и отправить коммит? +git add <файл> Добавить конкретный файл +git add . Добавить все файлы +git commit -m 'Описание коммита' +git push origin <ветка> 9) Как посмотреть что коммит точно отправлен и находится в github? +Заходим в репозитории в гитхаб, выбираем ветку, и справой стороны есть кнопка "Commits", именно здесь отображаются все коммиты. 10) Какая команда показывает что код не прошёл проверки на ошибки? +pre-commit run --all-files 10.1) Напишите список линтеров которые используются для проверки кода и дайте их краткую характеристику. +1. mypy - проверяет типы данных в коде +2. pylint - суровый линтер, который анализирует код на ошибки, стилистические проблемы и улучшения (глубже, чем flake8) +3. flake8 - проверяет код на ошибки, несоответствие PEP 8 и потенциальные баги +4. black - форматирует код по строгим стилевым правилам (отступы, длина строк и т.д.) 11) Как узнать какой именно линтер не прошёл проверку? +при вводе pre-commit run --all-files, отображается список линтеров и состояние. Если выходит красным и Failed, то не прошел. 12) Линтер Pylint видит markdown? +Нет, этот линтер проверяет код python, а ячейки markdown игнорирует. 13) Номер ячейки в терминале и номер ячейки в vs code может отличаться? в каком случае? +Да, может отличаться, происходит при работе с markdown и ipynb. 14) Где посмотреть номер ячейки в vscode? +Можно посмотреть в правом нижнем углу, бонусом видно сколько ячеек вообще существует. 15) В каком формате ipynb отправляется в гитхаб? причём здесь JSON? +файл .ipynb в гитхаб, хранится как текстовый файл, содержащий данные в формате JSON. 16) Где посмотреть в какой ячейке ошибка? +Прямо под ячейкой ошибки будут светиться красным + при вводе pre-commit run --all-files, рядом с линтером вы увидете сообщение об ошибке 17) Как запустить терминал? +В левом верхем углу Terminal -> New Terminal 18) Что такое линтер? +Программа, которая проверяет код на соответвие общим требованиям. Помогает выявить баги, улучшать читаемость кода и следовать стандартам кодирования, таким как PEP 8 19) В какой сайт нужно вставлять код ошибки если ошибка связана с pylint? +https://pylint.pycqa.org 20) Секция pydocstyle в большинстве случае автоматический закрывается после исправления ошибок в каком линтере? +flake8 21) Что такое описание модуля? Оно должно отражать информацию о том что находится в модуле? +Такая текстовая информация, которая обычно содержится в докстринге (docstring) модуля, и предоставляет краткое объяснение о том, что делает этот модуль и какие функции или классы он содержит. 21) С какой git команды начинается утро программиста? +Git pull 22) После внесения изменений в файлах, кнопка open in vs code пропадает в кошке, как по другому открыть vs code из кошки? -23) Что такое stash? - Общее объяснение концепции. +Название репы -> Правая кнопка мыши -> Open in VS +23) Что такое stash? Stash - это функция Git, которая позволяет временно сохранить незакоммиченные изменения в локальной директории в буфер. +Чтобы принять pull, сихронизировать изменения полученные с удаленного репозитория и помогает сохранить недавние изменения локального репозитория. 23.1) Как сохранить стэш? git командa(подсказка: https://t.me/c/1937296927/3602/19531): - +git stash - сохранит незакоммиченные изменения в буфер. +git stash list - отобразит список сохраненных стешов. Кнопка в vs code: - +Чтобы принять пулл из интернета, при возникновении конфликта - Accept Current Change, если и локальные и удаленные изменения то - Accept Both Changes 23.2) Как восстановить стэш(подсказка: https://t.me/c/1937296927/3602/25747)?: git команда(подсказка: https://t.me/c/1937296927/3602/19531)?: +git stash apply - восстановит последний стэш, но он не удалиться из буфера +git stash apply stash@{n} - применит стэш с определенным индексом, n - индекс. +git stash pop - применит стэш и удалит из буфера изменения. Это как комбинация команд git stash apply && git stash drop 23.3) Различие между стэшем и коммитом. Когда лучше сохранить изменения в стэше, а когда коммитить. +Стэш лучше применить, когда нужно переключиться на другую задачу, но так чтоб не потерять последние изменения, например при приеме pull. Это временное пространство куда сохраняем изменения, можно сохранить в стэш, восстановить, доделать и закоммитить. +Коммить лучше, в тех случаях когда нет конфликтов между репозиториями и мы уверены в том, что действительно хотим отправить результаты в git. 23.4) Как просмотреть список сохраненных стэшей? git команда (подсказка: https://t.me/c/1937296927/3602/19531): - +git stash list 23.5) Как удалить стэш? Команды для удаления отдельных стэшей или всех сразу. git команда (подсказка: https://t.me/c/1937296927/3602/19531): - +git stash drop stash@{n} - для отдельных стешей, где n - индекс стеша. +git stash clear - удалит всех сразу. 23.6) Практические примеры использования стэша. Краткие сценарии, где стэш помогает. +Принятия pull +git stash +git pull +git stash pop +Это поможет избежать конфликтов между репозиториями и сихронизирует их. +Если рабочий день закончился, но мусорить коммиты не хочется, можно сохранить как стеш +git stash push -m "незаконченный класс Personality" - сохраним в конце дня. +git stash pop или git stash apply - восстановим и продолжим работать над таской. 24) Где посмотреть что есть конфликт в файлах? +В терминале вводим git status 24.1) Когда он появляется? +Появлется, в том случаем когда контрибьюторы работают одновременно. Один захотел отправить коммит, но тут приходит пулл. 25) Как решить конфликт в файлах? +Возник конфликт. + В кошке: + 1. Save changes and continue + 2. Stashed Changes и восстановить локал изменения -> Restore. И открываем файл в котором были измения в VS code. + VS code: + 1. Accept Current Change - принять изменения из удаленного репозитория + 2. Accept Incoming Change - принять изменения локальные + 3. Accept Both Changes - и то, и другое. + + 26) Напишиие правильное утверждение --Зелёное то что пришло с гитхаба и синее локальные изменения или синее то что пришло с гитхаба и зелёное это локальные изменения +-Зелёное то что пришло с гитхаба и синее локальные изменения или синее то что пришло с гитхаба и зелёное это локальные изменения. +Ответ: Зеленое то что пришло с гитхаба, а синее локальные изменения 27) Если мы работаем в одном файле, можно ли принять pull после того как вы спрячете в стэш свои изменения? +Конечно да 27.1) Что может произойти когда stash восстановите после принятия pull? +Могут произойти конфликты, особенное если изменения были в одном файле. 28) Сколько способов решения конфликтов было показано в видео? Напишите ЧИСЛО и укажите их способы. + 1. Accept Current Change - принять изменения из удаленного репозитория + 2. Accept Incoming Change - принять изменения локальные + 3. Accept Both Changes - и то, и другое. 29) Что делает кнопка complete merge? +Complete Merge - помогает завершить слияние после того, как разрешили все конфликты, и git автоматически добавит коммит слияния. 30) В какой чат нужно писать если остались вопросы? +Helpme или Github 31) Что такое FORK? Зачем его делают? +Создание копии репозитория у себя, тем самым не трогаем сам репозитории. Мы можем что-то добавить или поменять, далее предложить изменения владельцу сделав пулл реквест 32) Как скачать форкнутый репозиторий на локальный компьютер? +Заходим в репу, нажимаем на code, Open with Github Desktop 33) С какой вероятностью ваши ошибки были уже решены? и кто их решил? +С вероятностью 80-90% решены в HelpMe, по видеочату или текстом. Либо сам Руслан или другие коллеги 34) Как создать файл в vs code? +Нажать на название репозитория, отобразятся иконки, нажимаем на иконку ввиде бумаги с изогнутым углом. Даем название файлу и вуаля. 35) Файл лога нужно заполнять в конце каждого урока? +Да ================== Дополнительные вопросы: @@ -76,12 +160,18 @@ 3) Почему расширение py лучше чем ipynb? 4) Что такое pep8? подсказка:https://peps.python.org/pep-0008/ +Общие правила для всех, кто пишет код на пайтон. Для того чтобы код был чистым. 4.1) линтеры проверяют на соблюдение pep8? +Да, выше перечислила какие из них проверяют. 4.2) Какая нотация используется для создания переменных? ответ на 85-95 страницы https://t.me/c/1937296927/1/16676 +snake_case 4.3) Может ли переменная состоять из одной буквы например андерскор "_" ? +Да, например в циклах 4.4) Зачем и где мы используем андерскор _ +для разделения слов в именах переменных и функций 4.5) По PEP8 допустима переменная в одну букву? ответ на 85-95 страницы https://t.me/c/1937296927/1/16676 +Да, если программа маленькая. В больших/средних проектах строго используем понятные и читабельные переменные. Да в целом лучше привыкать нормально называть переменные. diff --git a/tests/quiz/quiz_2.txt b/tests/quiz/quiz_2.txt index eb328c6c..3d92ae6b 100644 --- a/tests/quiz/quiz_2.txt +++ b/tests/quiz/quiz_2.txt @@ -4,15 +4,20 @@ Если вы знаете ответы на вопросы из Вашего опыта, то таймкоды из видео не надо указывать и т.д. 1. Как включить автосохранение данных в VSCODE? +File далее Auto Save 2. Как настроить перенос строки? +Preferences -> Settings -> Word Wrap Column 3. Сколько символов по pep8 разрешено на строке? +79 4. Какие способы переноса строк показаны в видео: + Конкатенация строк 4.1 Строки с использованием обратного слэша (\) string_continued = "This is a long string that we want to " \ "split across multiple lines." print(string_continued) +обратный слэш (\) позволяет переносить строку на несколько строк в коде, чтобы улучшить читаемость 4.2 Тройные кавычки (''' или """) @@ -57,22 +62,46 @@ full_string = string_part1 + string_part2 print(full_string) 5. Проверка на ошибки c помощью кнопки problems, где она находится? +В терминале, 1ая секция 6. Где в vscode находится клиент гита? как в нём отправить коммит? как принять домашку? +Он находится в меню. Кнопка Source Control 7. Что такое GIT? он локальный? В нём можно посмотреть историю изменений файлов и вернуться к любому коммиту? +GIT - система контороля версии, помогает нам сохранять все изменния в коде и в файлах (изображения и т.д). Он локальный. Можно посмотреть историю и вернуться к любому коммиту. 8. Как вставить картинку в маркдаун? +![Описание картинки](images/my_picture.png) или так ![Описание картинки](https://example.com/image.jpg) 9. Где посмотреть длину строки в vs code? +В правом нижнем углу. 10. Как поменять тип ячейки с питона на маркдаун? +Снизу ячейки, Add code cell 11. Как запустить сразу все ячейки в юпитере? +Run All в левом верхнем углу 12. Как изменить размер картинки в юпитере? Нужно для этого знать HTML? +Нужно указать длину и ширину картины с помощью html 13. Какой хоткей чтобы запустить ячейку с смещением на следующую? +Shift и Enter 14. Как включить отображение номеров строк в юпитере(Cell line numbers)? +Справа 3 точки и выбираем Show Cell Line Numbers 15. Что такое "Go To" чем это полезно? Как перейти сразу на ошибочную ячейку? +Кнопка которая перенаправит на ячейку с ошибкой 16. Как очистить вывод ячеек которые уже запущены? +Clear All Outputs 17. Как работать одновременно в нескольких файлах в VSCODE? Что такое SPLIT? +Split помогает разделить экран на 2 части. А значит можно работать в нескольких файлах. 18. Каким сочетанием убирается левый сайдбар? +ctrl + b 19. Кнопка два листочка это наши локальные файлы? +Да 20. Какая ошибка появилась в трассировке при запуске всех ячеек DICT или LIST? -21. Вы ознакомились с https://t.me/c/1937296927/832/19307? и ttps://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet? +TypeError? +21. Вы ознакомились с https://t.me/c/1937296927/832/19307? и https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet? +Да 22. Что такое валидация? +Процесс проверки данных или системы на соответствие определенным правилам, стандартам или требованиям. 23. Что такое трассировка ошибки? +Последовательность вызовов функций, которые привели к возникновению ошибки в программе. Трассировка отображает путь выполнения программы от точки, где возникла ошибка, до начальной точки. 24. Что значит отвалился интерпритатор? +Интерпретатор, перестал работать корректно. Это может произойти по разным причинам: +Ошибка в коде: Ошибка в программе может привести к тому, что интерпретатор не сможет выполнить код и завершится аварийно. +Недостаток памяти: Если программе не хватает памяти для выполнения, интерпретатор может выдать ошибку и завершиться. +Сбой операционной системы: Проблемы с операционной системой могут привести к сбою интерпретатора. +Внешние факторы: Например, отключение питания, перегрев компьютера или проблемы с сетью.