Создание назначения типов ячеек блокнота
Обновлено: 22.11.2024
[Примечание: этот раздел является частью онлайн-заметок, но на самом деле это файл документа, созданный автоматически из сеанса блокнота ipython, размещенный здесь, поскольку вы считаете его частью своего чтения. Для выполнения задания вам очень нужно скачать файл ipynb.]
Это ваше первое задание по Python. С этим заданием мы выполним несколько задач. Сначала мы убедимся, что ваш Python установлен правильно и что некоторые из основных компонентов, которые нам нужны, работают правильно, в частности, блокнот IPython. Далее мы постараемся сделать так, чтобы вам было удобно работать с блокнотом IPython. Вы должны иметь возможность выполнять в нем код, наблюдать за результатами и записывать часть увиденного. Не менее важно, чтобы у вас была возможность создать новый файл записной книжки, в котором будет ваша работа, СОХРАНИТЬ свою работу и сдать ее. Вы сдадите свою работу, отправив мне по электронной почте копию файла .ipynb. В крайнем случае, вы можете сохранить его как html-файл, открыть этот html-файл в своем браузере и распечатать html-файл, чтобы дать мне печатную копию. В любом случае, я рекомендую сохранить печатную копию на случай, если что-то пойдет не так с электронной версией вашей работы, которую вы мне отправляете. Мы проходим каждый из этих шагов по очереди.
Создайте собственный файл записной книжки. После того, как вы прочитали эти указания, вы должны открыть меню «Файл», которое появляется сразу под заголовком IP[y]: Notebook, и выбрать «Создать копию». Это создаст новую вкладку в вашем браузере, содержащую все материалы в этой записной книжке с новым именем, включая слово «Копировать». Затем вы должны открыть меню «Файл», которое появляется чуть ниже заголовка «IP[y]: Notebook», и выбрать «Переименовать». Переименуйте блокнот в _ipython_types. Например, я бы переименовал свое задание в mark_gawron_python_types. Это создаст новый файл с именем mark_gawron_python_types.ipynb в том же каталоге, в котором я запустил блокнот ipython. Это файл, над которым вы будете работать, и в конечном итоге прикрепите его к электронному письму, чтобы сдать домашнее задание. Вы должны скопировать и переименовать, как только сможете, в сеансе работы с записной книжкой. Выполнение этих действий не изменит исходный файл записной книжки, который вы скачали для выполнения этого задания. Так что, если что-то пойдет не так, вы можете вернуться к этому, чтобы начать все сначала. Если вы выполните шаг «Переименовать» без шага копирования, вы в конечном итоге перезапишете исходную копию, которую вы скачали.
Сохранение. После того, как вы переименовали файл, вы можете сохранить свою дальнейшую работу, просто вытащив то же меню файла и выбрав «Сохранить и проверить». Вы заметите, что в меню есть еще один пункт «Вернуться к контрольной точке». После того, как вы установили контрольную точку, это позволяет вам вернуться к этому сохраненному состоянию. Это очень полезно, если что-то пойдет не так, и вы попадете в состояние, когда Python, кажется, не отвечает. Подробнее об этом ниже. Но просто помните: сохраните свою работу. Чаще сохраняйте его.
Завершение Python и перезапуск. Если кажется, что Python не отвечает вам, когда вы выполняете команды, которые должны иметь ответ (например, запрашивая значение переменной, просто вводя имя переменной), вы можете перезапустить Python, вытащив меню «Ядро» и выбрав «Прерывание». Или в любое время, будь то после прерывания или нет, вы можете выбрать «Ядро»> «Перезапустить». Внимание: это приведет к очистке памяти Python. Таким образом, ни одно из определений, которые вы уже выполнили, не будет действовать. Это означает, что если вы хотите работать с выражением, которое зависит от чего-то ранее определенного, вам придется повторно выполнить все определения, от которых оно зависит. См. раздел о взаимодействии с блокнотом IPython.
Завершение сеанса записной книжки IPython. Выберите «Закрыть и остановить» в меню «Файл». Это убивает процесс Python, работающий за вашей записной книжкой. Но это не убивает программу, которая взаимодействует с вами через ваш веб-браузер, называемую Notebook Server. Это все еще работает в окне, из которого вы изначально запустили блокнот. Чтобы убить эту программу, вернитесь в окно терминала и нажмите Ctrl-C. Или просто игнорировать. Это никому не вредит.
Создание HTML-версии сеанса записной книжки. Только когда вы хотите создать печатную копию сеанса ipython. Выйдите и завершите сеанс записной книжки. Затем в том же окне терминала, из которого вы начали сеанс записной книжки ipython, выполните:
ipython nbconvert --to html python_types.ipynb
Это создаст новый файл с именем python_types.html в том же каталоге. Вы можете открыть этот файл в своем браузере и распечатать его.
Отправить мне ваше задание по электронной почте. Отправляйте по электронной почте только файлы .ipynb или .py. Нет файлов .html. Содержимое .html можно сдать только в виде печатной копии. Мой адрес электронной почты: gawron@mail.sdsu.edu.
3.5.1. Взаимодействие с блокнотом IPython¶
Основная концепция. Блокнот IPython — это своего рода электронная таблица, состоящая из последовательности ячеек двух типов, называемых ячейками кода и ячейками Markdown.Эти два типа ячеек позволяют вам делать две разные вещи: вводить текст и взаимодействовать с Python. Все ячейки кода начинаются с In []: . В любое время вы можете дважды щелкнуть ячейку кода и отредактировать ее, добавив или удалив материал. Когда вы закончите редактирование, поместите курсор в ячейку кода и нажмите клавишу [Enter], удерживая нажатой клавишу Shift, которую мы в дальнейшем будем писать как [Shift] - [Enter]. Это выполнит код в этой ячейке и даст вам ответ Python (если он есть). Имейте в виду, что Python отвечает на последнюю строку, введенную в ячейку, и не все операторы Python требуют ответа. Например, если вы наберете 2+3 в ячейке кода и нажмете [Shift] - [Enter], Python ответит 5 , но если вы наберете X=2+3 , Python ничего не скажет. Он просто меняет свое состояние, так что теперь переменная X определена и имеет значение 5 .
Зависимости ячеек кода. Все определено? Когда вы загружаете блокнот Python, Python не выполняет автоматически весь код в ячейках кода. Он ждет, когда вы скажете ему об этом. Часто ячейка кода будет иметь выражения, которые будут зависеть от других определяемых выражений или от загрузки какого-либо модуля Python, и эти вещи будут происходить в ячейках над той, которую вы редактируете. В этом случае выполнение ячейки, которую вы редактируете, перед выполнением ячеек выше вызовет ошибку Python, часто NameError. Есть два способа исправить это. Один из них — выполнить ячейку с нужным определением, а затем повторно выполнить ячейку, которую вы редактировали. Это раствор скальпеля. Самое простое решение — открыть меню «Ячейка» и выбрать «Выполнить все вышеперечисленное». С течением времени, когда наши блокноты становятся все более и более сложными, решение с молотком будет работать все реже и реже, или вам станет не терпится дождаться завершения выполнения ненужных фрагментов кода. В этот момент было бы неплохо понять зависимости между ячейками кода и просто выполнить ячейки, необходимые для ваших текущих целей редактирования. Часто это будет так же просто, как просто выполнить ячейки в разделе блокнота, над которым вы работаете.
Помогите. Конечно, получить помощь можно, вытащив меню «Справка», но стоит отметить, что большинство пунктов не для новичков. Два самых важных элемента:
Справка по блокноту. Это приведет вас к некоторым веб-страницам, которые в основном представляют собой учебник по блокноту IPython. Настоятельно рекомендуется.
Сочетания клавиш. Это включает в себя все способы выполнения задач с помощью клавиатурных команд, которые часто более эффективны, чем перетасовка меню. Большинство команд начинаются с Ctrl-m. Как и в случае с [Shift] - [Enter], это означает удержание первой клавиши при нажатии второй. Таким образом, Ctrl-m означает удерживая нажатой клавишу ``Control``, одновременно нажимая клавишу ``m``.
Создание новых ячеек. В конце концов вы будете выполнять задания, в которых вы создаете новые ячейки кода и новые ячейки уценки. На данный момент ячейки обоих типов были предоставлены ниже, чтобы вы могли ввести свои ответы. Когда вы хотите начать создавать ячейки, вы можете использовать команды клавиатуры, показанные в справке по сочетанию клавиш, которые будут помещать новые ячейки выше и ниже ячейки, на которой находится ваш курсор. in. По умолчанию новая ячейка является кодовой ячейкой. Существует также сочетание клавиш для превращения ячейки кода в ячейку уценки.
3.5.2. Кортежи¶
Чтобы приступить к заданию, вспомните инструкции, которые вам дали в классе о том, как использовать блокнот IPython. Поместите курсор в следующую ячейку (с номером 2) и нажмите клавишу [Enter], удерживая нажатой клавишу Shift, которую мы в дальнейшем будем писать как [Shift] - [Enter]. Ничего не случится. Но вы определили переменную T как кортеж из трех членов.
Ячейка ниже содержит ошибку. Чтобы увидеть, в чем ошибка, поместите курсор в ячейку и нажмите [Shift] - [Enter]. Объясните, в чем ошибка в ячейке на 2 ячейки ниже (с надписью Введите ответ здесь). (Это не NameError ; если вы получите NameError , это значит, что вы не выполнили сначала ячейку, определяющую переменную T.) Объясните, как можно определить T по-другому, чтобы выражение в ячейке ниже не было ошибкой. .
[Введите здесь свой ответ, дважды щелкнув этот текст. Это откроет эту ячейку для редактирования. Когда вы закончите вводить свой ответ, нажмите [Shift] - [Enter], чтобы преобразовать ваш ответ в красиво отформатированный текст. Если вы передумали и хотите пересмотреть ответ, просто дважды щелкните его еще раз.]
В ячейке ниже напишите выражение, вычисляющее длину T . Выполните выражение, набрав [Shift] - [Enter] и убедитесь, что вы получили правильный результат. Если вы не помните, как вычислить длину кортежа, вы можете ознакомиться с вводным черновиком книги о кортежах Python ИЛИ выполнить поиск в Google по запросу «длина кортежа Python».
В следующей ячейке напишите выражение, которое извлекает значение ['a','b','c'] из Higgledypiggledy . Например, выражение Higgledypiggledy[0] возвращает значение 1 .Проверьте свой ответ, набрав [Shift] - [Enter], чтобы увидеть, что вы получите. Если вы получаете NameError , это потому, что вы не выполнили сначала выражение в ячейке выше, чтобы определить переменную Higgledypiggledy . Для этого поместите курсор в ячейку выше и нажмите [Shift] - [Enter] .
В следующей ячейке введите одно выражение, которое извлекает значение (1.4, "Сэм") из Higgledypiggledy и задает это значение для переменной. Этот ответ будет иметь форму Something = Something . Первым будет имя переменной. Вы можете выбрать любое имя в качестве имени переменной, если оно состоит только из букв (пока избегайте цифр и специальных символов) и еще не зарезервировано в качестве имени встроенного оператора или функции Python. Python вызовет SyntaxError, если вы используете зарезервированное имя.
В следующей ячейке введите одно выражение, которое извлекает значение "Сэм" из Higgledypiggledy . Если вы не можете придумать ни одного выражения, которое делает это, вы можете использовать переменную, которую вы определили в ячейке [5], и извлечь из нее «Сэм». Но это не так хорошо, потому что для получения значения, которое можно было бы получить за один шаг, требуется два шага.
3.5.3. Строки¶
Ячейка ниже определяет строку. Выполните это определение. (Это еще один способ сказать: «Поместите курсор в ячейку и нажмите [Shift] - [Enter] )». Обратите внимание, что когда вы оцениваете эту ячейку, Python, кажется, ничего не делает. Тем не менее, он изменил свое состояние, чтобы отразить тот факт, что переменная Example_str была определена для обозначения конкретной строки.
В следующей ячейке напишите и выполните выражение, которое извлекает значение "r" из Example_str . В строке два r, поэтому возможны два ответа:
Строка имеет то приятное свойство, что некоторые из ее подстрок являются английскими словами. В ячейке ниже напишите одно выражение Python, которое извлекает слово rat из Example_str . Возможно, вам придется просмотреть лекционный материал о срезах струн. Оцените его с помощью [Shift] - [Enter], чтобы проверить свой ответ.
В той же ячейке (ячейка выше) на новых строках напишите еще два выражения, которые извлекают два других английских слова. Каждый раз, когда вы добавляете строку в ячейку, нажимайте [Shift] — [Enter] . Обратите внимание, что когда в ячейке содержится более одной строки, Python, кажется, отвечает только на последнюю строку. Вот как работает Python Interpreter (программа, с которой вы взаимодействуете, когда вводите команды в Python). Несмотря на то, что Python отвечает только на последнюю строку, выполняются все строки.
3.5.4. Словари¶
Существует два способа определения словарей, оба из которых стоит знать. Начнем с самого простого для ввода.
В следующей ячейке напишите одно выражение, чтобы получить значение "Python" из dd .
В следующей ячейке напишите выражение, которое добавляет информацию к dd . В частности, добавьте ключ Favorite_baseball_team и задайте для него значение "Chicago Cubs" . Обратите внимание, что строки могут содержать пробелы и оставаться допустимыми строками.
В следующей ячейке мы используем другой синтаксис для определения словаря.
Обратите внимание на некоторые особенности этого словаря. Все ключи представляют собой одиночные символы, а значения — целые числа. Более того, на каждую букву алфавита приходится одна клавиша. Плюс есть клавиши для пробела и знака препинания, точки (‘.’). Всего 28 ключей. На самом деле этот словарь хранит количество раз, когда каждый из этих 28 символов встречается в конкретном предложении английского языка. (Вы можете сами догадаться, какое из них, очевидно, предложение, включающее все 26 букв алфавита). В ячейке ниже напишите выражение, которое извлекает значение 5 из letter_counts . (Есть два возможных ответа).
В ячейке ниже напишите выражение, которое извлекает целое число, связанное с ключом q, из letter_counts .
3.5.5. Наполнение словаря информацией¶
Теперь давайте рассмотрим более практичный пример определения словаря.
Этот счетчик с именем letter_freqs определен в строке 3 и заполнен информацией в цикле for, который начинается в строке 4 и заканчивается в строке 5. Переменная Sentence определяется как строка (строка 2), и цикл for проходит через каждый символ этой строки и добавляет 1 к его счету в словаре (строка 5). Вы могли заметить, что ключи и счетчики в счетчике letter_freqs были такими же, как и в словаре letter_counts, определенном в ячейке [5]. На самом деле счетчик — это просто словарь с некоторыми специальными функциями, облегчающими подсчет вещей. Мы будем часто использовать счетчики для хранения простых счетов. Вы должны убедиться, что подсчеты в letter_freqs верны (например, действительно есть только один t в предложении быстрая коричневая лиса прыгает над ленивой желтой собакой.)< /p>
Существует важное различие между строкой Sentence и строкой Sentence2 . Что это такое?Как разница отражается в letter_freqs2 .
В большинстве курсов CDSS для выполнения заданий используются блокноты Jupyter. Блокноты Jupyter — это инструмент, используемый для вычислений в браузере, который позволяет включать код, текст и визуализации на одну и ту же страницу. После создания эти тетради можно раздать учащимся, а затем загрузить в различных форматах для отправки. Вы можете увидеть пример блокнота Data 8 здесь. Ссылка может занять некоторое время, чтобы загрузить все файлы.
Работа с блокнотами Jupyter¶
Ниже приведено краткое описание того, как использовать блокноты Jupyter на сайте datahub.berkeley.edu . Разработку заданий можно выполнить на datahub.berkeley.edu или локально, если у вас уже есть локальная установка Jupyter. В приведенных ниже шагах предполагается, что вы работаете с DataHub, но большинство шагов можно выполнить и на локальной установке. Если вы решили работать локально, мы рекомендуем заранее протестировать свои ноутбуки на datahub.berkeley.edu. Среда разработки в DataHub, вероятно, отличается от вашей локальной среды, поэтому код может сломаться.
Создать пустой блокнот¶
В этом разделе описывается, как создать блокнот в инфраструктуре JupyterHub. Перейдите на сайт datahub.berkeley.edu. Нажмите на зеленую кнопку «Запустить мой сервер». Вам не нужно делать это, если вы работаете локально.
Нажмите раскрывающееся меню «Создать» в правой части страницы. Выберите параметр для Python 3 в разделе «Ноутбуки» .
Вы увидите пустой блокнот, в который теперь можно добавить текст и код. Блокнот состоит из разделов, называемых ячейками. Можно использовать разные типы клеток. Код является частью типа ячеек «код», а текст — частью типов ячеек «уценки».
Добавить новую ячейку¶
Новую ячейку можно добавить с помощью кнопки + слева или кнопки "Вставить" на панели инструментов.
Чтобы задать тип этой ячейки, нажмите «Ячейка» на панели инструментов, затем «Тип ячейки», а затем «Код» или «Уценка» . Код можно вводить напрямую. Текст должен быть добавлен в формате уценки.
Вот пример того, как будут выглядеть ячейки кода и уценки с содержимым.
Вы заметите, что на предыдущем изображении нет вывода кода. Кроме того, форматирование текста отображается некорректно. Чтобы запустить код или просмотреть отформатированный текст, необходимо запустить ячейку. Отдельную ячейку можно запустить, набрав Shift-Enter из ячейки. Все ячейки можно запустить, нажав кнопку воспроизведения на панели инструментов (треугольник с линией). Вы также можете нажать «Ячейка» на панели инструментов, чтобы увидеть дополнительные способы запуска ячеек. Ниже приведены результаты выполнения всех ячеек.
Запустить код¶
Вы можете запустить код, набрав Shift-Enter в ячейке или нажав кнопку воспроизведения на панели инструментов (треугольник с линией).
Код, запущенный в одной ячейке, доступен в другой ячейке. Если в ячейку вносятся какие-либо изменения, вы должны повторно запустить все ячейки, которые вы хотите затронуть этим изменением.
Скачать блокноты¶
Нажмите «Файл» на панели инструментов, затем «Загрузить как» и выберите «Блокнот» (.ipynb) . Блокнот будет загружен на ваш компьютер в стандартном формате блокнота Jupyter. Вы также можете скачать блокноты в других форматах, как показано ниже.
Дополнительные ресурсы¶
Блокнот с основами Markdown. Двойной щелчок по каждой ячейке позволяет увидеть, как различное содержимое форматируется в блокнотах Jupyter.
Работа с кодом Python и ячейками Markdown в Jupyter Notebook
Вспомните, что файл Jupyter Notebook состоит из набора ячеек, в которых может храниться текст или код.
- Текстовые ячейки. Текстовые ячейки позволяют писать и отображать синтаксис Markdown.Здесь вы можете описать и задокументировать свой рабочий процесс.
- Ячейки кода. Ячейки кода позволяют писать и запускать программный код (например, Python ).
Создать новые ячейки
Для создания новых ячеек можно использовать инструменты меню или сочетания клавиш.
Функция | Сочетание клавиш | Инструменты меню |
---|---|---|
Esc + a (вверху), Esc + b (внизу) | Вставить→ Вставить ячейку выше ИЛИ Вставить → Вставить ячейку ниже | |
Копировать ячейку | c | Копировать ключ |
Вставить ячейку | v | Вставить ключ |
Хотя типом ячейки по умолчанию для новых ячеек является Код, вы можете изменить тип ячейки любой существующей ячейки, щелкнув ячейку и выбрав новый тип ячейки (например, Markdown ) в меню типа ячейки на панели инструментов. р>
Варианты типов ячеек включают «Код», «Уценка», «Необработанный NBConvert» (для того, чтобы текст оставался неизменным с помощью nbconvert) и «Заголовок».
Вы можете изменить тип любой ячейки в Jupyter Notebook с помощью панели инструментов. Тип ячейки по умолчанию — Код.
Чтобы использовать сочетания клавиш, нажмите клавишу esc. После этого вы можете изменить ячейку на Markdown, нажав клавишу m, или изменить ячейку на Code, нажав клавишу y.
Выполнить ячейки
Ячейки кода Python
Вы можете запустить любую ячейку в Jupyter Notebook (независимо от того, содержит ли она Code или Markdown ), используя инструменты меню или сочетания клавиш.
Функция | Сочетание клавиш | Инструменты меню |
---|---|---|
Ctrl + Enter | Ячейка → Выполнить ячейку |
Например, вы можете добавить новую ячейку кода, а затем запустить следующий код Python (например, 3 + 4 ). Ваш результат или выходные данные будут отображаться под ячейкой кода, которую вы запускаете.
Ячейки уценки
Вы можете запускать ячейки Markdown так же, как вы можете запускать ячейки кода. Однако при запуске ячейки Markdown текст, отформатированный с использованием синтаксиса Markdown, будет отображаться как стилизованный текст.
Это означает, что заголовки крупнее и жирнее, рядом с маркированными списками стоят маркеры вместо * , а обычный текст выглядит нормально. Под ячейкой Markdown результаты не отображаются.
Например, приведенный ниже синтаксис Markdown представляет 3 заголовка. Вы можете дважды щелкнуть в любой ячейке Markdown, чтобы увидеть необработанный синтаксис Markdown, который для ячейки ниже будет выглядеть как этот необработанный синтаксис Markdown:
Чтобы увидеть Markdown как стилизованный текст, запустите ячейку. Это должно выглядеть так, как напечатано ниже:
Это субтитры в Markdown
Это подзаголовок меньшего размера
Этот подзаголовок еще меньше
Изменить порядок ячеек в блокноте Jupyter
Вы можете изменить порядок ячеек в Jupyter Notebook, используя кнопки со стрелками вверх и вниз в строке меню. Для этого щелкните внутри ячейки, которую вы хотите переместить, а затем нажмите нужную стрелку столько раз, сколько вам нужно, чтобы переместить ячейку в нужное место.
Вы можете использовать строку меню в Jupyter Notebook для перемещения ячеек в файле Jupyter Notebook.
Очистить результаты в блокноте Jupyter
Иногда вам может понадобиться очистить все полученные результаты вывода. Вы можете сделать это с помощью Меню:
Инструменты меню | |
---|---|
Ячейка -> Текущие выходные данные -> Очистить |
Кнопка | Функция |
---|---|
В записной книжке Jupyter есть четыре типа ячеек: ячейки кода, ячейки уценки, необработанные ячейки и ячейки заголовков, хотя существует шесть уровней ячеек заголовков. 2.1 Ячейки кода¶По умолчанию ячейки кода Jupyter Notebooks будут выполнять Python. Блокноты Jupyter обычно также поддерживают команды JavaScript, Python, HTML и Bash. Более полный список см. в документации по ядру. 2.1.1 Расположение ячеек кода¶Ячейки кода имеют как входные, так и выходные компоненты. Вы можете просматривать эти компоненты тремя различными способами. 2.1.1.1 Конфигурация строки (настройка по умолчанию)¶Если вы не укажете иное, ваши ячейки кода всегда будут настроены таким образом, что входные и выходные компоненты будут отображаться в виде горизонтальных строк, а входные данные будут располагаться над выходными. Ниже приведен пример ячейки кода с настройками по умолчанию: 2.1.1.2 Табуляция ячеек¶Вкладка "Ячейка" позволяет просматривать входные и выходные компоненты ячейки по отдельности. Это также позволяет вам скрывать любой компонент за другим, что может быть полезно при создании визуализации данных. Ниже приведен пример ячейки кода с вкладками: 2.1.1.3 Конфигурация столбца¶Как и конфигурация строк, вариант макета столбцов позволяет одновременно просматривать как входные, так и выходные компоненты. Однако в макете столбца два компонента отображаются рядом друг с другом, причем ввод слева, а вывод справа. Ниже приведен пример ячейки кода в конфигурации столбца: 2.2 Ячейки Markdown¶В Jupyter Notebooks Markdown Cells — это самый простой способ написания и форматирования текста. Более подробное объяснение того, как писать в ячейках Markdown, см. в этом разделе руководства. 2.3 Необработанные ячейки¶Необработанные ячейки, в отличие от всех других ячеек Jupyter Notebook, не различаются между вводом и выводом. Это означает, что необработанные ячейки не могут быть преобразованы ни во что иное, кроме того, чем они уже являются. Если вы нажмете кнопку «Выполнить» на панели инструментов с выбранной необработанной ячейкой, ячейка останется такой, какая она есть, и ваш Jupyter Notebook автоматически выберет ячейку непосредственно под ней.Необработанные ячейки не имеют параметров стиля, только тот же моноширинный шрифт, который вы используете во всех других необработанных ячейках Блокнота. Вы не можете выделять жирным шрифтом, курсивом или увеличивать любой текст или символы в необработанной ячейке. Поскольку необработанные ячейки не имеют визуализируемой формы, они в основном используются для создания примеров. Если вы сохраните и закроете свой блокнот, а затем снова откроете его, все ячейки кода, уценки и заголовка будут автоматически отображаться в той форме, в которой вы их оставили при первом закрытии документа. Это означает, что если вы хотите сохранить необработанную версию ячейки, скажем, если вы пишете статью по информатике и нуждаетесь в примерах кода, или если вы пишете документацию о том, как использовать Markdown, и вам нужно продемонстрировать, какой ввод приведет к какому результату. , то вы можете использовать необработанную ячейку, чтобы убедиться, что ваши примеры остаются в их наиболее полезной форме. 2.4 Ячейки заголовка¶Несмотря на то, что можно упорядочить документ с помощью заголовков Markdown, ячейки заголовков обеспечивают более глубокую структурную организацию вашего блокнота, поэтому их использование дает несколько преимуществ. 2.4.1 Связывание¶Ячейки заголовков имеют определенные местоположения внутри вашего Блокнота. Это означает, что вы можете использовать их для создания внутренних ссылок Блокнота. 2.4.2 Автоматическая нумерация разделов и поддержка оглавления¶В вашем блокноте Jupyter есть два полезных инструмента, которые используют структурную организацию, которую ячейки заголовков придают вашему документу: автоматическая нумерация разделов и создание оглавления. 2.4.2.1 Автоматическая нумерация разделов¶Предположим, вы пишете статью и, как это часто бывает, когда у вас в голове крутится множество сложных мыслей, вы несколько раз реорганизовали свои идеи. Автоматическая нумерация разделов будет проходить через вашу записную книжку и нумеровать разделы и подразделы в соответствии с ячейками заголовка. Это означает, что если вы несколько раз перемещали один или несколько больших разделов, вам не придется самостоятельно просматривать свою статью и перенумеровывать ее, а также все ее подразделы. Примечания. Инструмент автоматической нумерации разделов с тремя переключателями, поэтому при нажатии кнопки «Нумерация разделов» будет выполнено одно из трех действий: «Автоматическая нумерация разделов» пронумерует ваши разделы, исправит непоследовательную нумерацию или отменит нумерацию ваших разделов (если все ваши разделы уже последовательно и правильно пронумерованы). Таким образом, даже если вы ранее пронумеровали свои разделы, автоматическая нумерация разделов пройдет по всему документу, удалит текущие номера разделов и заменит их правильными номерами в линейной последовательности. Это означает, что если ваш третий раздел когда-то был вторым, автоматическая нумерация разделов удалит "2" перед названием вашего раздела и заменит его на "3". Несмотря на то, что эта функция экономит много времени, она создает одно ограничение. Может быть, вы пишете статью о детских книгах, и одна из книг, которую вы обсуждаете, называется «Два кота». Неудивительно, что раздел, в котором вы подводите итоги и анализируете эту книгу, озаглавлен «2 кошки». Автоматическая нумерация разделов примет номер 2 за информацию о разделе и удалит его, оставив только заголовок «Кошки». Однако, если выделить жирным шрифтом, курсивом или поместить заголовок раздела в кавычки, весь заголовок раздела будет сохранен без каких-либо проблем. Следует также отметить, что даже если вы должны озаглавить раздел числом, стоящим перед любыми буквами, и вы не хотите выделять его жирным шрифтом, курсивом или помещать в кавычки, вы всегда можете запустить автоматическую нумерацию разделов, а затем перейти к этого раздела и повторно введите его название вручную. Поскольку автоматическая нумерация разделов использует ячейки заголовков, ее эффективность в некоторой степени зависит от ясности вашей организации. Если в вашей статье есть два раздела, которые начинаются с ячеек Заголовка 1, и каждый из разделов имеет два подраздела, которые начинаются с ячеек Заголовка 2, автоматическая нумерация разделов будет нумеровать их 1, 1.1, 1.2, 2, 2.1 и 2.2 соответственно. Однако, если вы использовали ячейку Заголовка 3 для обозначения начала того, что должно было быть разделом 2.1, автоматическая нумерация разделов пронумерует этот раздел 2.0.1, и появится сообщение об ошибке, говорящее вам, что «Вы поместили ячейку Заголовка 3 под ячейка заголовка 2 в разделе 2". Точно так же, если вы начинаете свою статью с любой ячейки заголовка меньше, чем заголовок 1, скажем, ячейки заголовка 3, тогда автоматическая нумерация разделов будет нумеровать ваш первый раздел 0.0.3, и появится сообщение об ошибке, говорящее вам, что «Блокнот начинается с заголовка 3 ячейка." Примечание. По мере разработки заданий их следует сохранять в папку source// иерархии nbgrader, где идентификатор_назначения — это имя создаваемого задания (например, "ps1"). .. см. также:: :doc:`philosophy` Подробнее о том, как устроена иерархия nbgrader. :doc:`/configuration/student_version` Инструкции по настройке внешнего вида студенческой версии задания.Прежде чем вы сможете приступить к разработке заданий, вам необходимо установить панель инструментов nbgrader. Если он у вас не установлен, сначала следуйте :doc:`инструкциям по установке`. После установки панели инструментов вы должны увидеть ее в раскрывающемся меню "Панель инструментов ячейки": При выборе панели инструментов «Создать задание» для каждой ячейки будет создана отдельная панель инструментов, которая по умолчанию представляет собой раскрывающееся меню с выбранным элементом «-». Для ячеек с уценкой можно выбрать один из двух дополнительных вариантов: «Ответ с оценкой вручную» или «Только для чтения»: Для ячеек с кодом можно выбрать один из четырех вариантов, в том числе "Ответ с оценкой вручную", "Ответ с автоматической оценкой", "Тесты с автоматической оценкой" и "Только для чтения": В следующих разделах подробно рассматриваются различные типы ячеек и показаны ячейки, взятые из полного примера задания, созданного с помощью расширения панели инструментов nbgrader: Ячейки "Вручную оцениваемые ответы"Если вы выберете вариант "Оценка ответа вручную" (доступен как для ячеек с уценкой, так и для ячеек с кодом), расширение nbgrader пометит эту ячейку как ячейку, содержащую ответ, который должен быть оценен вручную оценщиком. Вот пример ячейки ответа, оцененной вручную: Наиболее распространенный вариант использования этого типа ячеек — письменные ответы со свободным ответом (например, интерпретирующие результаты кода, который мог быть написан и/или выполнен выше). Когда вы указываете ответ, оцененный вручную, вы должны дополнительно сообщить nbgrader, сколько баллов стоит ответ, и идентификатор ячейки. Кроме того, при создании окончательной версии задания (см. :ref:`назначить-и-выпустить-задание`) тела ячеек ответов будут заменены кодом или текстовой заглушкой, указывающей учащимся, что они должны поставить их ответ или решение там. Подробнее о том, как настроить это поведение, см. в :doc:`/configuration/student_version`. Примечание: синяя рамка отображается только тогда, когда активна панель инструментов расширения nbgrader; он не будет виден учащимся. Ячейки "Автоматически оцененный ответ"Если вы выберете вариант "Автоматически оцениваемый ответ" (доступен только для ячеек с кодом), расширение nbgrader пометит эту ячейку как ячейку, содержащую ответ, который будет оцениваться автоматически. Вот пример ячейки ответа с автоматической оценкой: В отличие от ответов, оцененных вручную, ответы с автоматической оценкой не приносят никаких баллов: вместо этого баллы за ответы с автоматической оценкой указываются для конкретных тестов, оценивающих эти ответы. Дополнительные сведения см. в следующем разделе. Примечание: синяя рамка отображается только тогда, когда активна панель инструментов расширения nbgrader; он не будет виден учащимся. Ячейки "Автооценка"Если вы выберете параметр «Тесты для автоматической оценки» (доступен только для ячеек кода), расширение nbgrader пометит эту ячейку как ячейку, содержащую тесты, которые необходимо выполнить во время автоматической оценки. Вот пример двух тестовых ячеек: Тестовые ячейки должны содержать операторы ``assert`` (или аналогичные). При запуске через ``nbgrader autograde`` (см. :ref:`autograde-assignments`), ячейка будет пройдена, если не возникнет ошибок, и не пройдет в противном случае. Вы должны указать количество баллов, которое стоит каждая тестовая ячейка; то, если тесты пройдены при автооценке, учащиеся получат указанное количество баллов, а в противном случае - ноль баллов. Значок замка в левой части панели инструментов ячейки указывает на то, что тесты доступны только для чтения. Дополнительную информацию о том, что это означает, см. в следующем разделе. Примечание: синяя рамка отображается только тогда, когда активна панель инструментов расширения nbgrader; он не будет виден учащимся. Ячейки "только для чтения"Если вы выберете параметр "Только для чтения" (доступный как для ячеек кода, так и для ячеек уценки), расширение nbgrader пометит эту ячейку как недоступную для изменения. На это указывает значок замка в левой части панели инструментов ячейки: Однако это на самом деле не означает, что при открытии в блокноте он действительно доступен только для чтения. Вместо этого это означает, что во время шага ``назначение nbgrader`` (см. :ref:`assign-and-release-an-assign`) источник этих ячеек будет записан в базу данных. Затем, во время шага ``nbgrader autograde`` (см. :ref:`autograde-assignments`), nbgrader проверит, изменился ли источник версии ячейки учащегося. Если это так, он заменит исходный код ячейки версией в базе данных, таким образом эффективно перезаписывая любые изменения, внесенные учащимся. .. versionadded:: 0.4.0 Ячейки только для чтения (и тестовые ячейки) теперь действительно доступны только для чтения! Однако на данный момент эта функция будет работать только на основной версии записной книжки (5.0.0.dev). Эта функциональность особенно важна для тестовых ячеек, которые всегда помечены как доступные только для чтения.Поскольку механизм автооценки заключается в том, что учащиеся получают полный балл, если тесты пройдены, простой способ обойти это — просто удалить тесты или закомментировать их. Эта функция, доступная только для чтения, отменит любые такие изменения, внесенные учащимся. Назначить и отменить задание.. см. также:: :doc:`/command_line_tools/nbgrader-assign` Параметры командной строки для ``nbgrader assign`` :doc:`philosophy` Подробная информация о структуре иерархии каталогов :doc:`/configuration/ config_options` Подробная информация о ``nbgrader_config.py`` Примечание. Student_id здесь не указан, поскольку исходная и окончательная версии задания одинаковы для всех учащихся. После запуска nbgrader assign релизная версия блокнотов будет: Напоминаем, что преподаватель несет ответственность за распространение этой версии релиза среди своих студентов, используя существующую инфраструктуру общения студентов и распространения документов своего учебного заведения. Пример рабочего процесса: преподаватель создает разрешение на заданиеВ этом примере инструктор знакомит преподавателя с рабочим процессом создания задания и его подготовки к передаче учащимся:
1. Добавить набор задач в исходную папкуДля упрощения этого примера два блокнота с заданием уже сохранены в папке source/ps1: 2. Убедитесь, что тесты проходят в версии для преподавателейВ идеале решения в версии для инструктора должны быть правильными и проходить все тестовые случаи, чтобы гарантировать, что вы даете своим учащимся тесты, которые они действительно могут пройти. Чтобы убедиться, что это так, запустите: Если блокнот проходит все тесты, вы должны увидеть сообщение "Успешно! Ваш блокнот прошел все тесты". 3. Настройте задания и учеников в файле конфигурацииСоздание файла nbgrader_config.py и настройка списка ваших заданий — это первый шаг рабочего процесса для создания версии выпуска задания. Эти задания будут автоматически добавлены в базу данных sqlitegradebook.db. Если эта база данных еще не существует, nbgrader автоматически создаст ее. По умолчанию команды nbgrader (например, nbgrader assign ) предполагают, что эта база данных называетсяgradebook.db и находится в корневом каталоге вашего курса, хотя ее имя и путь можно настроить в nbgrader_config.py . 4. Назначьте набор задач с помощью nbgraderТеперь, когда журнал оценок настроен, запустите nbgrader assign . При запуске nbgrader assign имя назначения (то есть «ps1») передается. Мы также указываем блокнот header ( source/header.ipynb ) для добавления в начало каждого блокнота в задании. По умолчанию эту команду следует запускать из корня каталога курса: 5. Проверьте папку релизаПосле завершения назначения nbgrader на предыдущем шаге появится новая папка с именем release с той же структурой, что и исходный файл. Папка выпуска содержит актуальную версию выпуска файлов заданий: 6. Убедитесь, что тесты не проходят в студенческой версииВ идеале все тесты в студенческой версии должны пройти неудачно, если учащийся ничего не реализовал. Чтобы убедиться, что это действительно так, мы можем использовать команду nbgrader validate --invert: Если записная книжка не прошла все тесты, вы должны увидеть сообщение "Успешно! Записная книжка не прошла ни одной проверки". 7. Предоставление файлов учащимсяС этого момента вы сможете взять файлы из папки ``release`` и раздать их учащимся. Если вы используете nbgrader в среде с общим сервером, вы можете сделать это с помощью команды ``nbgrader release`` (см. :doc:`managing_assignment_files`). В противном случае вам нужно будет сделать это вручную: Обратите внимание: для правильной работы nbgrader учащиеся должны использовать блокнот IPython/Jupyter версии 3 или выше. Если они не используют версию 3 или более позднюю, они могут удалить ячейки, содержащие важные метаданные для nbgrader. В версии 3 или более поздней в записной книжке есть функция, предотвращающая удаление ячеек. Дополнительные сведения см. в этом выпуске. Чтобы убедиться, что учащиеся имеют достаточно последнюю версию записной книжки, вы можете включить в каждую записную книжку с заданием ячейку, подобную приведенной ниже: Автоматическая оценка заданий<р>..см.также:: :doc:`/command_line_tools/nbgrader-autograde` Параметры командной строки для ``nbgrader autograde`` :doc:`philosophy` Подробная информация о структуре иерархии каталогов :doc:`/configuration/config_options` Подробная информация о ` `nbgrader_config.py``После того, как учащиеся отправят задания, вы захотите сохранить их в каталоге ``отправлено``. Как описано в :doc:`философии`, вам необходимо организовать свои файлы определенным образом. Для автоматической оценки заданий у вас должны быть представленные версии заданий учащихся, организованные следующим образом: После запуска nbgrader autograde версия блокнотов с автоматической оценкой будет: Пример рабочего процесса: автоматическая оценка преподавателем заданийВ следующем примере у нас есть задание с двумя блокнотами. Есть две отправки задания: Прежде чем мы сможем начать выставлять оценки, нам нужно указать, кто эти учащиеся. Мы сделали это ранее в файле nbgrader_config.py, где также указали список назначений: После того как файл конфигурации настроен для учащихся, мы можем запустить автооценщик (и, как и другие команды nbgrader для преподавателей, его нужно запускать из корня каталога курса): При оценивании отправки для Bitdiddle вы увидите несколько предупреждений, похожих на "Контрольная сумма для ячейки оценки correct_squares изменилась!". Что здесь происходит, так это то, что nbgrader записал исходное содержимое ячейки оценки correct_squares (когда выполнялось назначение nbgrader) и сравнивает отправленную версию с этой исходной версией. Было обнаружено, что отправленная версия была изменена (возможно, этот студент пытался сжульничать, закомментировав неудачные тесты), и поэтому отправленная версия тестов была перезаписана исходной версией тестов. Вы также можете заметить примечание о том, что «ps1 для Bitdiddle опаздывает на 21503,948203 секунды». Здесь происходит то, что nbgrader обнаруживает в представлении Bitdiddle файл с именем timestamp.txt, считывает эту метку времени и сохраняет ее в базе данных. Оттуда он может сравнить метку времени с датой выполнения набора задач и вычислить, не запоздало ли представление. После завершения автоматической оценки появятся новые каталоги для автоматически оцененных версий отправленных материалов: Отправка с автоматической оценкой 1: Отправка с автоматической оценкой 2: Ручная оценка и формальная оценка.. см. также:: :doc:`/command_line_tools/nbgrader-formgrade` Параметры командной строки для ``nbgrader formgrade`` :doc:`philosophy` Подробнее о структуре иерархии nbgrader. :doc:`/configuration/config_options` Подробная информация о ``nbgrader_config.py`` После автоматической оценки заданий они сохраняются в каталоге ``автооценка`` (подробнее см. :doc:`philosophy`): После запуска nbgrader autograde версия блокнотов с автоматической оценкой будет: Чтобы оценить задания с помощью формы HTML, все, что нам нужно сделать, это запустить: На самом деле formgrader вообще не изменяет файлы на диске; он только изменяет информацию о них в базе данных. Таким образом, для формографа нет шага «вывода». Важное примечание: если вы запускаете formgrader с общедоступным IP-адресом и портом (например, запустив ``nbgrader formgrade --ip= ``), тогда *любой* сможет получить доступ к формировщику по его URL-адресу! Таким образом, вы, вероятно, захотите запускать формограф только в частной сети, к которой имеют доступ только инструкторы (например, через VPN). В качестве альтернативы, если учащиеся получают доступ к своим записным книжкам через JupyterHub, вы можете настроить классификатор для аутентификации пользователей через JupyterHub, чтобы только определенные оценщики могли получить доступ к классификатору. Подробнее см. :doc:`/configuration/jupyterhub_config`. Отзывы о заданиях.. см. также:: :doc:`/command_line_tools/nbgrader-feedback` Параметры командной строки для ``обратной связи nbgrader`` :doc:`philosophy` Подробная информация о структуре иерархии каталогов :doc:`/configuration/ config_options` Подробная информация о ``nbgrader_config.py`` После того, как задания были оценены автоматически и/или вручную, они будут помещены в каталог `autograded` (подробнее см. :doc:`philosophy`): После запуска обратной связи nbgrader HTML-версии этих блокнотов будут сохранены в: Читайте также:
|