Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save maybe-hello-world/4d3071bb15654036b2ea9e0fa7e2ab56 to your computer and use it in GitHub Desktop.
Save maybe-hello-world/4d3071bb15654036b2ea9e0fa7e2ab56 to your computer and use it in GitHub Desktop.
{
"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