応用プログラミング及び実習 2020年度 ex04

Table of Contents

ex04A

ex04kadaiA.ipynb

  1. 上記のリンク先から notebook ファイルをダウンロードして開く
    • リンク先の画面右の方の「Raw」を クリックして「リンク先を別名で保存」とかそんなん
  2. そこに記された指示にしたがって notebook を編集して保存
    • 以下の「注意」も参照してね
  3. その notebook ファイルを以下の提出場所へ提出

提出場所: この授業のMoodleコースex04A

注意

notebook のセルを実行していると,たまにセルの番号のところが [*] となったままで反応が返ってこなくなるときがあります. ありがちな状況と対処法を書いときます

  1. 単に処理に時間がかかってるだけ → 待てばいい
  2. input( ) が入力待ってる → 入力欄になんか入力して Enter
  3. いつまで待ってもだめ → ウィンドウ上部の「■」ボタンを押して,そのセルの実行を強制的に停止させる

ex04B

  1. 右のリンク先のファイルを自分の AProg2020 フォルダ/ディレクトリに保存しましょう.: zipdata.txt
    • リンクを右クリックして「リンク先を別名で保存」とかそんなん
    • このファイルは,文字コード UTF-8 / UNIX改行コードで作成されたテキストファイルです. Windows環境の一部のソフトウェア(メモ帳など)で開くと,文字コードを変換できなくて化けちゃうことがあります.
  2. ダウンロードしたファイルを VSCode で開いて内容を確認しておきましょう.
  3. AProg2020 に,以下の内容のファイル ex04zip.py を作りましょう.
    #### 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), "件の郵便番号データを読み込みました")
    
  4. 上記を1箇所だけ修正(コード中のコメント参照,引数にはダウンロードしたファイルの名前を指定しましょう)して,動作確認しましょう.
  5. さらにプログラムを修正して, 実行すると次のように郵便番号から住所を検索できるようにしてください
    • 入力の扱い方や終了の条件等は,ex04A を参考にしてね
      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
      
  6. 動作確認をして間違いがないことを確認したら,以下へ提出してください.提出するのは,ex04zip.py です.

提出場所: この授業のMoodleコースex04B

ex04S (omake)

これはおまけ課題です.やらなくても減点はありません.やったら棒茄子?

ex04kadaiS.ipynb

この課題のねらい:


トップ   編集 凍結解除 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-10-20 (火) 10:56:54