#author("2018-09-28T12:50:08+09:00","default:takataka","takataka")
#author("2018-10-25T11:54:34+09:00","default:takataka","takataka")
*応用プログラミング及び実習 2018年度 第3回 [#ex03]

//&color(#ff0000){工事中};

#contents

** 今日の notebook [#c5575be4]

は [[AProg/2018]] からたどってください.
Notebook の扱いが分からないというひとはこちら: [[AProg/2018/ex01/Step1#step1_3]]

''<Notebook の開き方についてひとこと>''

 $ jupyter notebook hoge.ipynb
として開いたあと,メニューの 「File」 > 「Open」をたどると,hoge.ipynb と同じディレクトリ内のファイルを一覧できます.ここから他の notebook を開くこともできます.また,開きたい notebook のあるディレクトリで
 $ jupyter notebook
とすると,最初からファイル一覧が開きます.

**課題A (self) 期限: 授業当日11:45 [#kadaiA]

今日の notebook を開いてそこに記されたことを読んで&実行して学習しなさい.
完了したらチェックを受けなさい(notebookを開いたままにしておくこと).
**課題B (self) 期限: 当日の授業終了まで [#kadaiB]


[[03exB.ipynb>AProg:03exB.ipynb]]
[[03exB.ipynb>AProg:03exB.ipynb]]  ([[03exB.html>AProg:03exB.html]])

上記リンク先の Jupyter Notebook を開いてその指示にしたがいなさい.
完了したらチェックを受けなさい.

** IPython について [#ipython]
&color(#ff0000){工事中};

**課題C (TA) 期限: 次回2講時開始直後 [#kadaiC]

次のことを全てやりなさい.

***課題C-1 [#w5fc6426]

+ [[前回課題C>AProg/2018/ex02#kadaiC]] のプログラム 02exC.py をコピーして 03exC1.py を作成しなさい.
+ ex03exC1.py に課題B-1で作った関数 argmin の定義を追加し,この関数を呼び出すように修正しなさい.
次のことを全てやりなさい.IPython 使うのおすすめ: [[AProg/PythonProgramming#ipython]]
次のことを全てやりなさい.IPython 使うのおすすめ: [[AProg/PythonProgramming#ipython]]
+ [[前回課題C>AProg/2018/ex02#kadaiC]] のプログラム 02exC.py をコピーして 03exC.py を作成しなさい.
+ 03exC.py に課題B-1で作った関数 argmin の定義を追加し,この関数を呼び出すように修正しなさい.
+ 最大値の要素番号を返す関数 argmax の定義を追加し,同様に修正しなさい.
+ 平均値を求めて返す関数 average の定義を追加し,同様に修正しなさい.
+ 02score.txt のかわりに,右のリンク先のファイルを読み込んで実行してみなさい.: [[03score.txt>AProg:03score.txt]]
-- 自分のPC等でやりたい人向けの注意: このファイルは,文字コード UTF-8 /UNIX改行コードで作成されたテキストファイルです.Windows環境ではそれらを変換しないとうまく扱えないかもしれません.takataka に相談してください.

***課題C-2 [#w5cc067c]

+ 右のリンク先のファイルを ~/aprog20XY に保存しなさい: [[zipdata>AProg:zipdata]]
+ less コマンドで内容を確認しなさい.終了はアルファベットの 'q'
+ 同じディレクトリに以下の内容のファイルを 03exC2.py という名前で作りなさい.
#pre{{
#### AProg2018 第3回課題C-2

### 関数 readZIP() の定義
#      中身は一部知らないこともあるので,現時点では眺めてふーんって感じでよい
def readZIP(fn):

    dZIP = {}       # 空のディクショナリを作る
    with open(fn, "r") as f:  # ファイル名 fn のファイルを読み込みモードで開く
        for line in f:  # ファイルから1行ずつ読み込んでループ
            x, y = line.split()   # 空白区切りで分割.1つ目を x に,残り(2つ目)を y に
            dZIP[x] = y           # キー x に対する値を y とする.いずれも文字列

    return dZIP


# 引数にファイル名を指定して readZIP() を呼ぶ
#    何を引数に指定するかは自分で考えよう.戻り値は郵便番号データのディクショナリ
zip = readZIP( )

# ディクショナリに対する len() は,キーの数を返す
print(len(zip), "件の郵便番号データを読み込みました")

# 無限ループ
while True:
    num = input("郵便番号を入力してください(負の数だったら終了): ")
}}
+ readZIP() を呼び出すところを修正して実行しなさい.無限ループを止めるには CTRL+C.
+ これを修正して,以下のように郵便番号を検索できるようにしなさい.
#pre{{
   : (途中省略)
郵便番号を入力してください(負の数だったら終了): 5202123
5202123 滋賀県大津市瀬田大江町
郵便番号を入力してください(負の数だったら終了): 0010010
0010010 北海道札幌市北区北十条西(1〜4丁目)
郵便番号を入力してください(負の数だったら終了): 9998525
9998525 山形県飽海郡遊佐町直世
郵便番号を入力してください(負の数だったら終了): 1057219
1057219 東京都港区東新橋汐留メディアタワー(19階)
郵便番号を入力してください(負の数だったら終了): 1057229
1057229 東京都港区東新橋汐留メディアタワー(29階)
郵便番号を入力してください(負の数だったら終了): 1234567
見つかりません
郵便番号を入力してください(負の数だったら終了): -1
}}

**課題S (omake)  [#kadaiS]

&color(#ff0000){工事中}; 
//&color(#ff0000){工事中}; 

NumPy や Matplotlib をちょっと使ってみよう.02exC.py を 02exS.py にコピーして,次のことをやろう.

***ちょこっと NumPy [#uc6f4d3f]
''データ分析(回帰分析/最小二乗法)してみよう〜「ゴリゴリ売って大儲けほげ〜」''

+ プログラムの先頭に,次の行を追加
 import numpy as np   #  NumPy モジュールを np という名前で扱えるようにインポート
+ readScore() 関数を直後に以下を挿入して実行してみる
 score = np.array(scoreList)  # scoreList から NumPy の配列を作る
 print(score)
+ 最小最大平均を求めている部分を,NumPy の関数を呼び出すように書き換える.
どんな関数を使えばよいかは,「numpy ほげ」(ほげに適当なキワード)とか検索すれば分かるだろう.
+ ついでに標準偏差も計算させる
***ちょこっと Matplotlib [#b040aaa4]
+ プログラムの先頭に,次の行を追加
 import matplotlib.pyplot as plt
+ プログラムの末尾に,次の行を追加.ヒストグラムが描かれるはず.ヒストグラムのウィンドウを閉じればプログラムも終了する.
 plt.hist(score)
 plt.show()
+ 上記を修正して,以下のようなヒストグラムが描かれるようにしよう.
-- ヒント: これは,色を変えて,棒の幅を変えて,ヒストグラムのビン(1本の棒に相当する区間)を変えて作っている.
[[03exS.ipynb>AProg:03exS.ipynb]] ([[03exS.html>AProg:03exS.html]])

&ref(https://www-tlab.math.ryukoku.ac.jp/~takataka/course/AProg/02exS-hist.png,nolink);


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS