Created
March 25, 2019 16:57
-
-
Save maybe-hello-world/4d3071bb15654036b2ea9e0fa7e2ab56 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Введение в Jupyter Notebook\n", | |
"Jupyter - среда для разработки, поддерживающая в т.ч. язык Python (но не только). Особенностью данной среды является ее разделение на серверную и клиентскую часть, где серверная часть работает с интерпретатором Python, а клиентская часть обеспечивает взаимодействие с пользователем. \n", | |
" \n", | |
"Давайте рассмотрим процесс работы в данной среде. \n", | |
" \n", | |
"Весь пользовательский ввод осуществляется с помощью ячеек - блоков для ввода текста, которые потом обрабатываются интерпретатором. Все ячейки связаны и работают на одном ядре ( - читайте, в одной консоли интерпретатора). " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Ячейки подразделяются на три основных типа, переключать который можно для каждой ячейки отдельно в шапке страницы. Формат raw мы рассматривать не будем, он - для html кода или сложных конструкций. Когда он вам понадобится - вы сами сможете найти по нему информацию. \n", | |
" \n", | |
"Эта и предыдущая ячейка - формата Markdown, специальный формат разметки текста. Текст в ней отображается по некоторым правилам форматирования (можно пару раз нажать на ячейку и посмотреть, как он выглядит в оригинале).\n", | |
" \n", | |
"Следующая ячейка - типа \"код\"." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"a = [i for i in range(10)]\n", | |
"print(a)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Ячейки кода - основные ячейки для работы. Как можно заметить, код в них подсвечивается для удобства чтения, а также снизу отображается вывод ячейки. \n", | |
" \n", | |
"Снизу - ячейка для вас. Переключите ее на тип \"код\" и попробуйте вывести в консоль значение переменной a. \n", | |
"Для выполнения кода выделите ячейку и нажмите кнопку Run в шапке страницы." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" _Я - пустая ячейка, ляляля, исправь меня :)_" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Прекрасно! Как видите, переменные между ячейками - связаны и во всех ячейках, которые выполняются после той, где вы задали переменную X, можно использовать эту переменную. \n", | |
" \n", | |
"Учтите, ячейка может находится **выше** текущей, но если она выполнялась **позже**, то в ней можно работать с переменными, которые уже объявлены." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Цифры слева в каждой ячейке кода отображают, какой по счету эта ячейка была выполнена - специально для вашего удобства. Запланированные к выполнению или выполняющиеся ячейки помечены звездочкой (это не всегда правда, ячейка могла уже выполниться, а все еще со звездочкой, иногда Jupyter тупит)." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Кратко вспомним остальные кнопки:\n", | |
" * кнопка с дискетой - сохраняет данный лист\n", | |
" * кнопка с плюсиком - добавляет ячейку\n", | |
" * кнопка с ножницами - вырезает ячейку\n", | |
" * следующие две кнопки - копирование ячейки и вставка\n", | |
" * кнопки вверх и вниз перемещают ячейки на листе\n", | |
" * кнопка Run - запускает выполнение кода\n", | |
" * кнопка Stop (квадрат) - останавливает выполнение кода\n", | |
" * далее кнопка с линией в виде почти завершенного круга - эта кнопка перезагружает весь лист, как будто вы закрыли и снова открыли консоль Python. Обычно используется, если что-то сломалось и вы хотите запустить снова и выполнять ячейки сами.\n", | |
" * кнопка с перемоткой означает \"перезапусти лист (ядро) и выполни все ячейки сверху до низу\"\n", | |
" * далее идет переключатель типов ячейки\n", | |
" * и последняя кнопка вызывает командную панель, где есть всякие дополнительные команды" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"А теперь давайте выполним небольшую практику, чтобы вы слегка освоились. \n", | |
" \n", | |
"Снизу приведен небольшой код в ячейке - дополните его, пожалуйста и добейтесь корректного вывода в консоль" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def print_countdown(i):\n", | |
" \"\"\" Функция должна напечатать i строчек, в каждой из которых будет оставшееся число шагов (i убывает),\n", | |
" и после этого - строчку ПУСК! \"\"\"\n", | |
" \"\"\" Не успел реализовать, кто-нибудь, допишите, пожалуйста :( \"\"\"\n", | |
" pass\n", | |
"\n", | |
"print_countdown(9)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"А теперь давайте запустим следующий код..." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import time\n", | |
"while True:\n", | |
" print(\"Я все еще работаю...\")\n", | |
" time.sleep(1) # 1 секунду" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Как видите, код будет выполняться бесконечно - остановите его, хватит это терпеть! \n", | |
"Кстати, заметили, какое исключение выдает консоль, если вы остановите работу? Она пытается имитировать человека, чтобы наиболее корректно работали всякие библиотеки, которые на это надеялись." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Со следующими двумя ячейками что-то не так - исправьте, пожалуйста." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [], | |
"source": [ | |
"print(test)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"test = 4" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"И следующий код почему-то не выполняется..." | |
] | |
}, | |
{ | |
"cell_type": "raw", | |
"metadata": {}, | |
"source": [ | |
"print(\"Бутылка кефира, пол-батона!\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Ну и напоследок - давайте перетащим нашу ячейку с бесконечным циклом в самый низ, а после перезагрузим ядро и заставим все выполняться сверху до низу. Вы - молодец! :)" | |
] | |
} | |
], | |
"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.6.8" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment