#author("2020-10-20T10:56:44+09:00","default:takataka","takataka") #author("2020-10-20T10:56:54+09:00","default:takataka","takataka") * 応用プログラミング及び実習 2020年度 ex04 [#xa9b83a6] //&color(red){''工事中''}; #contentsx ** ex04A [#kadaiA] [[ex04kadaiA.ipynb>https://gist.github.com/55d93d15b0847ebb17cef44a273ba38d]] + 上記のリンク先から notebook ファイルをダウンロードして開く -- リンク先の画面右の方の「Raw」を ''右'' クリックして「リンク先を別名で保存」とかそんなん + そこに記された指示にしたがって notebook を編集して保存 -- 以下の「注意」も参照してね + その notebook ファイルを以下の提出場所へ提出 提出場所: [[この授業のMoodleコース>https://moodle.media.ryukoku.ac.jp/course/view.php?id=2278]] の [[ex04A>https://moodle.media.ryukoku.ac.jp/mod/assign/view.php?id=71909]] ''注意'' > notebook のセルを実行していると,たまにセルの番号のところが [*] となったままで反応が返ってこなくなるときがあります. ありがちな状況と対処法を書いときます + 単に処理に時間がかかってるだけ → 待てばいい + input( ) が入力待ってる → 入力欄になんか入力して Enter + いつまで待ってもだめ → ウィンドウ上部の「■」ボタンを押して,そのセルの実行を強制的に停止させる < ** ex04B [#kadaiB] + 右のリンク先のファイルを自分の AProg2020 フォルダ/ディレクトリに保存しましょう.: [[zipdata.txt>AProg:zipdata.txt]] -- リンクを右クリックして「リンク先を別名で保存」とかそんなん -- このファイルは,文字コード UTF-8 / UNIX改行コードで作成されたテキストファイルです. Windows環境の一部のソフトウェア(メモ帳など)で開くと,文字コードを変換できなくて化けちゃうことがあります. + ダウンロードしたファイルを VSCode で開いて内容を確認しておきましょう. + AProg2020 に,以下の内容のファイル ex04zip.py を作りましょう. #pre{{ #### AProg2020 第4回課題B ### 関数 readZIP() の定義 # 中身は一部知らないこともあるので,現時点では眺めてふーんって感じでよい def readZIP(fn): dZIP = {} # 空のディクショナリを作る # macOS のひとは,以下の「encoding="utf-8"」の部分はなくて ok with open(fn, "r", encoding="utf-8") as f: # ファイル名 fn のファイルを読み込みモードで開く for line in f: # ファイルから1行ずつ読み込んでループ x, y = line.split() # 空白区切りで分割.1つ目を x に,残り(2つ目)を y に dZIP[x] = y # キー x, 値 y のペアを登録.x, y とも文字列 return dZIP # 引数にファイル名を指定して readZIP() を呼ぶ # 何を引数に指定するかは自分で考えよう.戻り値は郵便番号データのディクショナリ zip = readZIP( ) # ディクショナリに対する len() は,キーの数を返す print(len(zip), "件の郵便番号データを読み込みました") }} + 上記を1箇所だけ修正(コード中のコメント参照,引数にはダウンロードしたファイルの名前を指定しましょう)して,動作確認しましょう. + さらにプログラムを修正して, 実行すると次のように郵便番号から住所を検索できるようにしてください -- 入力の扱い方や終了の条件等は,[[ex04A>#kadaiA]] を参考にしてね #pre{{ 118014 件の郵便番号データを読み込みました 郵便番号を入力してください('q'か'Q'で終了) 1057219 1057219 東京都港区東新橋汐留メディアタワー(19階) 郵便番号を入力してください('q'か'Q'で終了) 1057220 1057220 東京都港区東新橋汐留メディアタワー(20階) 郵便番号を入力してください('q'か'Q'で終了) 0010010 0010010 北海道札幌市北区北十条西(1〜4丁目) 郵便番号を入力してください('q'か'Q'で終了) 9998525 9998525 山形県飽海郡遊佐町直世 郵便番号を入力してください('q'か'Q'で終了) 5202123 5202123 滋賀県大津市瀬田大江町 郵便番号を入力してください('q'か'Q'で終了) 1234567 見つかりません 郵便番号を入力してください('q'か'Q'で終了) q }} +動作確認をして間違いがないことを確認したら,以下へ提出してください.提出するのは,ex04zip.py です. 提出場所: [[この授業のMoodleコース>https://moodle.media.ryukoku.ac.jp/course/view.php?id=2278]] の [[ex04B>https://moodle.media.ryukoku.ac.jp/mod/assign/view.php?id=71910]] **ex04S (omake) [#kadaiS] //&color(#ff0000){工事中}; &color(red){''これはおまけ課題です.やらなくても減点はありません.やったら棒茄子?''}; [[ex04kadaiS.ipynb>https://gist.github.com/8a25200c4876bff44f470f24d2886a73]] - 上記の notebook を開き,その指示にしたがって編集・実行してください - 仕上げた notebook ファイルを提出してください - 提出場所: Classroom 上の [[こちら>https://classroom.google.com/c/MTYxODQ4NzczNzgy/a/MTkwNjMyNjYzODk5/details]] (ファイルをここに提出したら,Teams のチャットで知らせてね) - 期限: 1027火の授業終了時 この課題のねらい: - Pythonで初歩的なデータ分析を経験してみる - ネット上のリファレンス等の情報を自分で収集してプログラムを書く経験をする