Last active
September 26, 2020 09:46
-
-
Save takatakamanbou/4908f0edf182be97230ab8c86077487c 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": [ | |
"# AProg2020 ex03 Notebook その4\n", | |
"\n", | |
"AProgのページ https://www-tlab.math.ryukoku.ac.jp/wiki/?AProg/2020" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"---\n", | |
"## モジュールを使う (pp.107-112)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### モジュールを import する (pp.107-109) " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import random # randomモジュールを読み込む\n", | |
"\n", | |
"print(random.random()) # 0 <= x < 1 の乱数を得る(浮動小数点数)\n", | |
"print(random.randint(0, 6)) # 0 <= x <= 6 の乱数を得る(整数)\n", | |
"a_list = [0, 1, 2, 3, 4, 5]\n", | |
"random.shuffle(a_list) # リストをランダムに入れ替える\n", | |
"print(a_list)\n", | |
"print(random.choice(a_list)) # リストの要素をひとつランダムに選ぶ" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"上記で利用している `random` というモジュールは Python の標準ライブラリに含まれているモジュールの一つである.\n", | |
"```\n", | |
"import random\n", | |
"```\n", | |
"を実行すると,この `random` モジュールに含まれている `hoge()` という関数を `random.hoge()` という形で呼び出すことができるようになる." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"次の例は,matplotlib というライブラリを使ってグラフを描画するコードである." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import matplotlib.pyplot # matplotlib.pyplot モジュールを読み込む\n", | |
"\n", | |
"X = [ -3, -2, -1, 0, 1, 2, 3]\n", | |
"Y = [ (x-2)*x*(x+2) for x in X ] # (よだんだよん) 「リスト内包表記」という書き方.forループしてリストを作る処理を簡潔に書ける(p.236)\n", | |
"\n", | |
"matplotlib.pyplot.plot(X, Y, color = \"green\", marker = \"o\", linestyle = \"dashed\") # plot 関数を呼び出す(名前が長い...)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"上記では, `matplotlib` というグラフ描画ライブラリの中の `pyplot` というモジュールを普通に読み込もうとして\n", | |
"```\n", | |
"import matplotlib.pyplot\n", | |
"```\n", | |
"と書いている.そのため,`plot()` 関数を呼び出す際には\n", | |
"```\n", | |
"matplotlib.pyplot.plot(...)\n", | |
"```\n", | |
"と書かないといけない.長くて面倒くさいと思ったら,次のように `as` を使って別名を付ければすればよい." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import matplotlib.pyplot as plt # matplotlib.pyplot モジュールを plt という名前で使えるように読み込む\n", | |
"\n", | |
"X = [ -3, -2, -1, 0, 1, 2, 3]\n", | |
"Y = [ (x-2)*x*(x+2) for x in X ] # (よだんだよん) 「リスト内包表記」という書き方.forループしてリストを作る処理を簡潔に書ける(p.236)\n", | |
"\n", | |
"plt.plot(X, Y, color = \"green\", marker = \"o\", linestyle = \"dashed\") # plot 関数を呼び出す(名前 plt.plot で済む)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"import する際に `as` で `plt` という別名をつけて,\n", | |
"```\n", | |
"plt.plot(...)\n", | |
"```\n", | |
"で済むようにしている." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### from を使ったインポート/モジュールいろいろ (pp.110-112)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"monk_fish_team = [158, 157, 163, 157, 145]\n", | |
"volleyball_team = [143, 167, 170, 165]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# statisticsモジュールを普通に import した場合\n", | |
"import statistics \n", | |
"\n", | |
"print(statistics.median(monk_fish_team)) \n", | |
"print(statistics.median(volleyball_team))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# 「from ほげ import へな」の場合\n", | |
"from statistics import median \n", | |
"\n", | |
"print(median(monk_fish_team))\n", | |
"print(median(volleyball_team))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
" 前者の例では,`statistics` モジュールの `median` 関数を呼び出すには `statistics.median()` と書く必要があるが,後者の例では, `median()` と略記できることがわかる.ただし,この例では `statistics` モジュールの他の関数まで省略形で書けるわけではない.\n", | |
" ```\n", | |
" from statistics import *\n", | |
" ```\n", | |
" と書くことで, `statistics` モジュール内の全ての関数などを `statistics` 付けず省略形で書けるようになるが,元から存在する関数など(標準の組み込み関数や自分で作った関数など)と同じ名前のものがあったりすると混乱するので,ご利用は計画的に." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"ところで,ここまでの例で登場したモジュールについては,ウェブ上にリファレンスが存在している.\n", | |
"\n", | |
"- `random` モジュールに含まれている関数その他の機能(p.386にも説明あり):\n", | |
"https://docs.python.jp/3/library/random.html\n", | |
"- `statistics` モジュールに含まれている関数その他の機能 https://docs.python.jp/3/library/statistics.html\n", | |
"\n", | |
"これらは Python の標準ライブラリに含まれているモジュールである.以下にアクセスすると,Python の標準ライブラリの詳細等の様々な文書を閲覧することができる.\n", | |
"https://docs.python.jp/3/\n", | |
"\n", | |
"`matplotlib` については,以下へどうぞ.ウェブで検索すれば日本語の情報も見つかるでしょう.\n", | |
"- matplotlibのウェブサイト: https://matplotlib.org/\n", | |
"- `matplotlib.pyplot` : https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"次の例は,以下を参考に作ったコードである(p.356以降も参照). https://docs.python.jp/3/library/datetime.html" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import datetime # 標準ライブラリの datetime モジュールをインポート\n", | |
"today = datetime.date.today() # 今日の日付\n", | |
"birthday = datetime.date(2004, 10, 26) # 誰かの誕生日\n", | |
"delta = today - birthday # 時間差を表す timedelta オブジェクト\n", | |
"print(\"生まれてから\", delta.days, \"日経ったみたいほげ\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"日付を変えて実行し直してみよう." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"次の例は,以下を参考に作ったコードである(p.377以降も参照).\n", | |
"- https://docs.python.org/ja/3/library/sys.html\n", | |
"- https://docs.python.jp/3/library/os.html\n", | |
"- https://docs.python.org/ja/3/library/getpass.html" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import sys # 標準ライブラリの sys モジュールをインポート\n", | |
"\n", | |
"# sys.platform でこのコードを実行してる環境の OS を識別できる\n", | |
"if sys.platform == 'win32':\n", | |
" osname = 'Windows'\n", | |
"elif sys.platform == 'darwin':\n", | |
" osname = 'macOS'\n", | |
"elif sys.platform == 'linux':\n", | |
" osname = 'Linux'\n", | |
"else:\n", | |
" osname = sys.platform\n", | |
"\n", | |
"import os # 標準ライブラリの os モジュールをインポート\n", | |
"\n", | |
"# この jupyter notebook が動作しているディレクトリ\n", | |
"# (current working directory)を取得\n", | |
"cwd = os.getcwd()\n", | |
"\n", | |
"import getpass # getpass モジュールをインポート\n", | |
"username = getpass.getuser() # ユーザ名を取得\n", | |
"\n", | |
"print(\"やあこんちは.\")\n", | |
"print()\n", | |
"print(\"ふむ,僕は\", osname, \"の環境下で動いてるほげね.\")\n", | |
"print(\"で,僕が今いる場所は\", cwd, \"ほげね.\")\n", | |
"print()\n", | |
"print(\"でもって君のIDは\", username, \"ほげね.\")\n", | |
"print(\"よろしくほげ.\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"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.8.5" | |
}, | |
"toc": { | |
"base_numbering": 1, | |
"nav_menu": { | |
"height": "146px", | |
"width": "258px" | |
}, | |
"number_sections": false, | |
"sideBar": true, | |
"skip_h1_title": true, | |
"title_cell": "目次", | |
"title_sidebar": "Contents", | |
"toc_cell": true, | |
"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