{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Przygotowanie innowacyjnych materiałów szkoleniowych i dokumentacji wewnętrznych w obszarze IT\n", "# 1. Tworzenie materiałów szkoleniowych w Jupyter Notebook - podstawy\n", "### *Paweł Skórzewski*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Czym jest Jupyter Notebook?\n", "\n", "Jupyter Notebbok jest datrmowym narzędziem, będącym częścią projektu open source Jupyter, które umożliwia interaktywną pracę i prezentację projektów z zakresu data science.\n", "\n", "Jupyter Notebook umożliwia zebranie w jednym pliku zarówno kodu i jego wyniku, jak i tekstu czy plików multimedialnych. \n", "W pojedynczym dokumencie można uruchomić kod, wyświetlić wynik jego działania, a także dodać do niego objaśnienia, wykresy - czyniąc go bardziej przejrzystym, zrozumiałym, odtwarzalnym i łatwiejszym do udostępnienia innym. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Osadzanie tekstu - Markdown\n", "\n", "Notebook umożliwia umieszczanie tekstu w formacie Markdown. \n", "W celu umieszczenia tekstu w formacie Markdown należy dodać nową komórkę i ustawić jej typ na *Markdown*.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Skróty klawiszowe\n", "\n", "Aby **dodać** komórkę, można też użyć skrótu klawiszowego:\n", "* cmd + a - by dodać komórkę powyżej aktualnie zaznaczonej\n", "* cmd + b - by dodać komórkę poniżej aktualnie zaznaczonej\n", "\n", "By zmienić **format** aktualnie zaznaczonej komórki, można użyć skrótu:\n", "* cmd + m - by zmienić format na markdown\n", "* cmd + y - by zmienić format na kod programistyczny\n", "\n", "**Wykonywanie** kodu aktualnie zaznaczonej komórki odbywa się poprzez skrót: ctrl + enter \n", "lub przez przycisk na pasku:\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Formatowanie tekstu\n", "\n", " \n", " # Nagłówek pierwszego poziomu\n", " ## Nagłówek drugiego poziomu\n", " \n", " Tekst, który tworzy akapit. **Pogrubiony tekst** i __pogrubiony tekst__ *kursywa* lub _kursywa_.\n", " \n", " Akapity muszą być oddzielone pustym wierszem.\n", " \n", " * Czasem chcemy zawrzeć wypunktowaną listę\n", " * Listy takie tworzy się używając znaku gwiazdki\n", " \n", " 1. Listy mogą być także numerowane.\n", " 2. Jeśli akurat taka lista jest potrzebna.\n", " \n", " [Możliwe jest umieszczanie hyperlinków](https://amu.edu.pl)\n", " \n", " Kod wewnątrz tekstu: `foo()`, a blok kodu:\n", " ```\n", " bar()\n", " ```\n", " \n", " Można również dodać obraz:\n", " ![alt txt](https://live.staticflickr.com/8807/18223540618_f9aab7c279_b.jpg)\n", " \n", " Jeśli trzeba zmienić rozmiar obrazu, lepiej dodać go przez HTML-owy tag ``:\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Nagłówek pierwszego poziomu\n", "## Nagłówek drugiego poziomu\n", " \n", "Tekst, który tworzy akapit. **Pogrubiony tekst** i __pogrubiony tekst__ *kursywa* lub _kursywa_.\n", " \n", "Akapity muszą być oddzielone pustym wierszem.\n", " \n", "* Czasem chcemy zawrzeć wypunktowaną listę\n", "* Listy takie tworzy się używając znaku gwiazdki\n", "\n", "1. Listy mogą być także numerowane.\n", "2. Jeśli akurat taka lista jest potrzebna.\n", " \n", "[Możliwe jest umieszczanie hyperlinków](https://amu.edu.pl)\n", " \n", "Kod wewnątrz tekstu: `foo()`, a blok kodu:\n", "```\n", "bar()\n", "```\n", "\n", "Można również dodać obraz:\n", "![alt txt](https://live.staticflickr.com/8807/18223540618_f9aab7c279_b.jpg)\n", "\n", "Jeśli trzeba zmienić rozmiar obrazu, lepiej dodać go przez HTML-owy tag ``:\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Osadzanie kodu\n", "\n", "W celu dodania kodu do pliku notebook, należy dodać nową komórkę i zmienić jej typ na *code*, zgodnie z instrukcją podaną powyżej przy dodawaniu Markdown.\n", "\n", "Wartym wspomnienia jest fakt, że wynik działania każdego fragmentu kodu jest zapamiętywany dla całego pliku - nie dla pojedynczej komórki. Jeśli zostanie dokonany import jakiejś biblioteki, bądź zadeklarowane zmienne w jednej komórce, to - **po uruchomieniu tego kodu** - będą one dostępne w innych komórkach\n", "\n", "### Kod Python\n", "\n", "Dla przykładu poniżej w jednej komórce znajduje się import biblioteki i definicja funkcji zwracająca kwadrat liczby, zaś w drugiej jest jej wywołanie na losowej liczbie:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "def square(x):\n", " return x * x" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5 do kwadratu to 25\n" ] } ], "source": [ "x = np.random.randint(1, 10)\n", "y = square(x)\n", "print(f\"{x} do kwadratu to {y}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Kod shell\n", "\n", "Wszystkie komendy, które działają w wierszu poleceń, mogą być używane również w plikach Jupyter Notebook.\n", "W tym celu należy poprzedzić daną komendę znakiem !:\n", "```\n", "!echo \"tekst z komendy powłoki\"\n", "```" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\"tekst z komendy powloki\"\n" ] } ], "source": [ "!echo \"tekst z komendy powloki\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Należy wspomnieć, że nie tylko można używać komend wiersza poleceń, ale również można je łączyć z kodem Python:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tekst z kodu Python\n" ] } ], "source": [ "wiadomosc = 'Tekst z kodu Python'\n", "!echo {wiadomosc}" ] } ], "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.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }