#author("2021-10-07T17:47:10+09:00","default:takataka","takataka") #author("2021-10-14T18:23:55+09:00","default:takataka","takataka") * 応用プログラミング及び実習 2021年度 ex04 [#xa9b83a6] &color(red){''工事中''}; //&color(red){''工事中''}; #contentsx **注意 [#ib719427] notebook のセルを実行していると,たまにセルの番号のところが [*] となったままで反応が返ってこなくなるときがあります. ありがちな状況と対処法を書いときます + 単に処理に時間がかかってるだけ → 待てばいい + input( ) が入力待ってる → 入力欄になんか入力して Enter + いつまで待ってもだめ → ウィンドウ上部の「■」ボタンを押して,そのセルの実行を強制的に停止させる ** ex04A [#kadaiA] [[ex04kadaiA.ipynb>https://github.com/takatakamanbou/AProg/blob/main/ex04kadaiA.ipynb]] + 上記のリンク先から notebook ファイルをダウンロードして開く -- notebook の扱い方を忘れたひとは [[こちら>../Setup#part2]] + そこに記された指示にしたがって notebook を編集・実行して保存 + その notebook ファイルを以下の提出場所へ提出 提出場所: [[この科目の Moodle コース>https://www-tlab.math.ryukoku.ac.jp/moodle/course/view.php?id=5]] の「ex04課題A」 ** ex04B [#kadaiB] + 右のリンク先のファイルを自分の AProg2021 フォルダ/ディレクトリに保存しましょう.: [[zipdata.txt>AProg:zipdata.txt]] -- ''リンクを右クリックして「リンク先を別名で保存」とかそんなん'' -- このファイルは,文字コード UTF-8 / UNIX改行コードで作成されたテキストファイルです. Windows環境の一部のソフトウェア(メモ帳など)で開くと,文字コードを変換できなくて化けちゃうことがあります. + ダウンロードしたファイルを VSCode で開いて内容を確認しておきましょう. + AProg2021 に,以下の内容のファイル ex04zip.py を作りましょう. #pre{{ #### AProg2021 第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://www-tlab.math.ryukoku.ac.jp/moodle/course/view.php?id=5]] の「ex04課題B」 **ex04S (omake) [#kadaiS] //&color(#ff0000){工事中}; &color(red){''これはおまけ課題です.やらなくても減点はありません.やったら棒茄子?''}; [[ex04kadaiS.ipynb>https://github.com/takatakamanbou/AProg/blob/main/ex04kadaiS.ipynb]] - 上記の notebook を開き,その指示にしたがって編集・実行し,仕上げた notebook ファイルを提出してください - 期限と提出場所: 1028木の授業終了までに Teams チャットで takataka へ この課題のねらい: - Pythonで初歩的なデータ分析を経験してみる - ネット上のリファレンス等の情報を自分で収集してプログラムを書く経験をする