Skip to content

Instantly share code, notes, and snippets.

@takatakamanbou
Created September 26, 2020 03:41
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takatakamanbou/aea43f2020be6e5cbc8c6b497ad0b109 to your computer and use it in GitHub Desktop.
Save takatakamanbou/aea43f2020be6e5cbc8c6b497ad0b109 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 応用プログラミング及び実習 2020年度 第1回\n",
"\n",
"- AProgのページ https://www-tlab.math.ryukoku.ac.jp/wiki/?AProg/2020\n",
"- 第1回のページ https://www-tlab.math.ryukoku.ac.jp/wiki/?AProg/2020/ex01"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# はじめての Jupyter Notebook\n",
"\n",
"これは, **Jupyter Notebook** という,ブラウザ上で Python などのプログラミング言語のコード(プログラムの断片)を対話的に実行できる仕組みです.\n",
"Jupyter Notebook の個々の「ノートブック」は, `.ipynb` という拡張子のついたファイルとして提供されていることがほとんどです.\n",
"ノートブックファイルの閲覧と実行の方法にはいろいろありますが,この授業では, **JupyterLab** というものを用います. JupyterLab を使うと,ノートブックをブラウザ上で閲覧することができます.いままさにそういう状況になってる...はず."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## とりあえずいじってみよう"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"↓の箱(**セル**と呼びます)をクリックして,**Shift+Enter**(シフトキーを押しながらエンターキーを押す)してみましょう."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x = 4649\n",
"y = 1314\n",
"z = x + y\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"すると,セル内の Python コードが実行され,その結果が表示されたはずです.\n",
"\n",
"さらに次のことをやってみよう\n",
"1. 上記の x + y を x - y に変更して実行(再生ボタン or Shift+Enter)してみる\n",
"1. さらに数字や式をいろいろいじって実行してみる"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"今度は↓のセルを実行してみましょう."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"さきほど上の方で計算した値が表示されたはずです.では,↓のセルを実行してその後で↑のセルを実行するとどうなるでしょう?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"z = 1818"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"このように, **Jupyter Notebook では,セルの見た目の並び順ではなく,各セルを実行した順序が結果に影響します**.あとで混乱しなくてすむよう,しっかり理解しておきましょう.\n",
"\n",
"セルを実行すると `[ ]` の中に番号が付くので,どういう順序でセルを実行したかがわかりますね."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"セルは Shift+Enter で実行できますが,ウィンドウの上部にはさみや三角形,四角形などがならんだアイコンバーから,三角形のボタン(「再生ボタン」っぽいやつ)を押すことでも実行できます.\n",
"\n",
"無限ループしたりバグがあったりでセルの実行が終わらない場合は,■ボタンを押して停止させることができます."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"たくさんあるセルを上から順に実行したいような場合は,一気に実行させることもできます.ページ上部のメニューから\n",
"\n",
" Run > Run All Cells\n",
"\n",
"を選んでみましょう."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ノートブックの保存とカーネルの話"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ここまで実行したノートブックを保存してみましょう.次のどちらかの方法で.\n",
"\n",
"1. はさみや三角形,四角形などがならんだアイコンバーの左端のアイコン(これ「フロッピーディスク」のアイコンなんですが,たぶんいまどきのひとは「フロッピーディスクって何?」でしょう...)をクリック.\n",
"1. それより少し上の段のメニューから File > Save Notebook"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"保存したら,次のことをやりましょう(JupyterLab終了したらこれも読めなくなるので手順覚えといてね).\n",
"1. JupyterLab を終了する. File > Shut Down\n",
"1. もう一度 JupyterLab を起動して,このノートブックを開く\n",
"1. **セルの実行はしないでここへ戻ってくる**\n",
"\n",
"```\n",
":\n",
":\n",
":\n",
"```\n",
"おかえりなさい (^^)/"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ここまでスクロールしてくる途中で見たと思いますが,セルを実行した結果が表示されたままです.作業してた結果が途中まで残っててうれしい...ように思えて実は...\n",
"\n",
"試しに以下のセルを実行してみましょう."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"指示どおりの手順をふんでいれば,上記セルを実行すると左端の表示は `[1]` となってるはずです.はじめて実行したセルってことです.さらに, 「`z` なんてのは定義されてない」 というエラーが出ちゃってるでしょう.\n",
"\n",
"つまり,ノートブックの保存の際には,コードの実行結果の見た目は保たれるけど,変数の値などまでは保たれない,ってことです."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ノートブックの裏側には Python のコードを実行している **Kernel** (カーネル)ってものがいます(「オペレーティングシステム(OS)の話で出てきたぞ」って覚えてるひともいるかもですが,いちおう別物). これが動いている間は,変数の値等は保たれてますが,Jupyter Lab を終了する「Shut Down」はこのカーネルを停止させる操作なので,そこで変数の値等は失われます.\n",
"\n",
"ちなみに,なんかいろいろやっててわけわからんようになったから一からやり直したい,という場合のために,JupyterLabはそのままでカーネルだけ再起動することも可能です.いまは実際に試す必要はないですが,興味があれば Kernel メニューを覗いてみてください."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ここまで読んだら,このノートブックの最初に戻って,各セルを上から順に実行しておきましょう.↑のセルもちゃんとエラーにならず実行されるはず."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## セルの追加,Codeセル,Markdownセル"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"セルを自分で追加することもできます.試しにこのセルをクリックして選択した状態で,メニューの「+」を押してみましょう."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"↑に新しいセルが挿入されましたね? そこに `z = z**100` (zにzの100乗を代入)と書いて実行してみましょう.普通にセルを挿入すると,このように Python コードを実行できるセル(Codeセル)となります."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"セルには,Python コードのかわりに文字を書くこともできます.このセルはそういう例です.試しに**ダブルクリック**してなにか書き足してみましょう.**編集後は Shift+Enter**.\n",
"\n",
"*斜体* **ボールド** ~~打ち消し~~\n",
"\n",
"# 箇条書き\n",
"## かじょーがき\n",
"### 過剰牡蠣\n",
"\n",
"1. 箇条書き\n",
"1. かじょーがき\n",
"1. 過剰牡蠣\n",
"\n",
"数式の例(LaTeXという仕組みの数式の書き方に則ってます)\n",
"$$ y = \\frac{1}{\\sqrt{2\\pi}} \\int_{-\\infty}^{\\infty} \\exp{\\left( -\\frac{x^2}{2}\\right)} dx $$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"上記のようなセルを新たに作る場合は,メニューで「+」を押してセルを挿入した後,プルダウンメニューを選んで Code => Markdown とします. \n",
"この授業の範囲外なので細かいことは説明しませんが,このように文字に飾りを付けたりする仕組みは,Markdown と呼ばれるものです.また,上記の数式は,LaTeX と呼ばれる仕組みを利用しています.興味のあるひとは takataka に尋ねたりウェブで検索したりしてみてください."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 課題"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"次のことをやりましょう.\n",
"\n",
"1. ↓にCodeセルを挿入し,その中身を「セルの内容例」のように書く\n",
"1. そのセルを実行する\n",
"1. そのセルとそのセルの実行結果が写ったスクリーンショットを撮る\n",
"1. 撮影したスクリーンショット画像を提出する.提出の仕方は別途指示します"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<セルの内容例>\n",
"```\n",
"print(z)\n",
"print('ほげほげ〜')\n",
"ID = 'a01055'\n",
"name = 'ほげほげお'\n",
"print(ID, name)\n",
"```\n",
"\n",
"`a01055` のところは自分の学籍番号に,`ほげほげお` のところは自分の氏名にしましょう.それぞれ,シングルクォーテーションかダブルクォーテーションのどちらかで囲みます."
]
}
],
"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.7.1"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": false,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment