• 検索結果がありません。

マッシュアップ(プログラミング演習)

N/A
N/A
Protected

Academic year: 2021

シェア "マッシュアップ(プログラミング演習)"

Copied!
43
0
0

読み込み中.... (全文を見る)

全文

(1)

マッシュアップ ( プログラミング演習 )

ウェブコンピューティング

2020

12

2

(2)

演習の前に

-

演習室の

PC

にログインするアカウントを持っていない人は、必要であれば アカウントを配布するので前に取りにきて下さい

-

サンプルプログラムのための

API

キーを取得しましょう

- https://webservice.recruit.co.jp/register/

-

上の

URL

からリクルートのサービスを使えるように登録

-

発行に少し時間がかかる可能性があるので、早めに取得推奨

(3)

演習の課題:マッシュアップとは?

• マッシュアップ (Web プログラミング )

複数の

Web

サービスの

API

を組み合わせ、あたかも一つの

Web

サービスのようにする機能のこと

Web

サービス事業者がサービスの機能やデータの一部を 公開し、他のサービスが利用できるように用意した「ア プリケーションプログラミングインタフェース」

• Web サービスの API

マッシュアップサービスを企画・作成してもらいます

• 実演の課題

(4)

演習

実際に API を利用した

アプリケーションを作ってみよう!

(5)

提出締切:

1

15

日(金)

17:00

提出先:

lec-webcomp[at]googlegroups.com

- (1)

(2)

をメールに添付して提出

演習・レポート課題(計 2 題)

(1) 調査課題

(2)

プログラミング課題(いずれか一題を選択)

松 竹 梅

基本 難しい そこそこ 易しい

(6)

(1) 調査課題

• 公開されている Web サービスについて調査し,そ れらをマッシュアップした新たな Web サービスの アイディアを提案せよ(少なくとも1つ).

利用する

Web

サービスの情報と組合せ方の全体像

図などがあると良い

実際にどのような

Web

サービスとなるのか(入出力の 例)などを明記してください

提案したサービスの何がいいのか?

提案したサービスがあるとどんな貢献があるのか?

などを存分にアピールしてください

(7)

API を利用した過去の例 (1)

• 提案サービス

入力した場所の周囲

3km

以内にある,

5000

円以下の宿 泊施設の空室情報を出力する

• 利用した Web サービス

– Google Maps API (Google Geocoding API)

地名を入力するとその地点の緯度経度を出力する

楽天トラベル空室検索

API

緯度経度を入力するとその付近の宿泊施設の空室を出力 する(半径や値段の指定はオプション)

• 利点

すぐに行ける安宿を出力してくれるので一人で予定を 立てずに旅行するときに大変重宝する

(8)

API を利用した過去の例 (2)

「ホットペッパーグルメ」

「文字を読める

Slackbot

画像の中の文字を抽出し、

その文字を出力できる。 お店のジャンルや予算などの 様々な条件を指定して検索が できる。

(9)

(2) プログラミング課題

• 目的

自分自身でプログラミングを行い,自分自身で

API

を叩 いてみよう!

• 言語: Python3 ( 推奨 )

他の言語でやりたい!という場合には構いません

サンプルは

Python3

でしか用意していません

(2)

プログラミング課題(いずれか一題を選択)

松 竹 梅

基本 難しい そこそこ 易しい

詳しくはスライド最終ページ参照

(10)

(2) プログラミング課題

• 目的

自分自身でプログラミングを行い,自分自身で

API

を叩 いてみよう!

(2)

プログラミング課題(いずれか一題を選択)

松 竹 梅

基本 難しい そこそこ 易しい

Python

プログラミ ングの基本

(×マッシュアップ)

マッシュアップ の基礎 ウェブアプリ

ケーション の基盤 ウェブアプリ

ケーション

(11)

(2) プログラミング課題 ()

• サンプルプログラムを参考に,学校検索を行うプ ログラムを作成せよ.(検索クエリの種類は問わ ない)

プログラムの概要(特に何を入出力とするのか)

利用した

Web

サービスの情報

プログラムのソース

実行例(3つ以上)

考察

工夫した点,苦労した点,問題,感想等

レポートの内容

(12)

(2) プログラミング課題 ()

• 「職業検索(サンプル)と学校検索(根)」を マッシュアップせよ(組合せ方は問わない)

(なお、片方のみ(職業 or 学校)と他のAPIをマッシュアップしたものでも良い

→ もしかして「竹」?

プログラムの概要(特に何を入出力とするのか)

利用した

Web

サービスの情報

プログラムのソース

実行例(3つ以上)

考察

工夫した点,苦労した点,問題,感想等

レポートの内容

(13)

(2) プログラミング課題 ()

• (1) 調査課題において提案した Web サービスを実際

に行うプログラムを作成せよ.(シェル上での処 理のみで構わない)

プログラムの概要(特に何を入出力とするのか)

利用した

Web

サービスの情報

プログラムのソース

実行例(3つ以上)

考察

工夫した点,苦労した点,問題,感想等

レポートの内容

(14)

(2) プログラミング課題 ()

• (1) 調査課題において提案した Web サービスを実際 に行うプログラムを作成し, Web ブラウザ上で動 作を行えるようにせよ.

プログラムの概要(特に何を入出力とするのか)

利用した

Web

サービスの情報

プログラムのソース

作成した

Web

サービスの

URL –

実行例(3つ以上)

考察

工夫した点,苦労した点,問題,感想等

レポートの内容

(15)

提出締切:

1

15

日(金)

17:00

提出先:

lec-webcomp[at]googlegroups.com

- (1)

(2)

をメールに添付して提出

演習・レポート課題(計 2 題)

(1) 調査課題

松 竹 梅

基本 難しい そこそこ 易しい

(2)

プログラミング課題(いずれか一題を選択)

(16)

環境設定

• 設定ファイル & サンプルプログラムをダウンロー ドしてください

– http://www.cl.ecei.tohoku.ac.jp/publications/2020/

WebComp2020.zip

• 演習室の PC でなく、自前の PC やサーバーで作業し てもらっても差し支えありません(が、故障等の 責任は負いかねます)

• プログラミングができる人はドンドン先に進んで

OK です

(以降の説明を必ずしも聞く必要はありません)

(17)

( 自前 PC 向け )Windows での環境構築

• Windows

Unix-like

な環境を使いたい場合,

WSL

が便利

– Windows Subsystem for Linux

コントロールパネルを開き,“プログラム →

Windowsの機能の有効化

または無効化” を選択

• “Linux用Windowsサブシステム”にチェックを入れる

• PC

を再起動する

(18)

( 自前 PC 向け )Windows での環境構築

• Microsoft Store

を開き,

“Ubuntu”

で検索

• “Ubuntu”

のページを開き,

入手

ボタンを押す

インストール後,再起動

(19)

( 自前 PC 向け )Windows での環境構築

• “win

キー

+ x” -> “i”

または

“win

キー

+ r”

”powershell”

と入力

黒い画面が立ち上がるので

”bash”

と入力

初回はユーザ名とパスワードの設定を要求される

今後の実験はbashと入力した先の環境で行う(毎回やる必要がある)

以下のコマンドを入力

(

設定したパスワードが要求されるので注意

)

– sudo apt update

– sudo apt install python3 python3-pip

– echo alias python=¥“python3¥” >> ~/.bashrc #コピペ厳禁(バグるので) – echo alias pip=¥“pip3¥“ >> ~/.bashrc #コピペ厳禁

– source ~/.bashrc

(20)

( 自前 PC 向け )Windows での環境構築

デフォルトだと日本語が文字化けしてしまうのでフォントを変える

• “

フォント

から日本語が含まれてそうなフォントを選択

バー上で右クリックし

プロパティ

を選択

• Bash起動後に日本語が確認できればOK

(21)

計算機管理室の環境

• 計算機室のデフォルト Python -> Python2.7

❌ : Python3

をインストールする

(→ 難しいし、面倒)

⭕️ : Python3

がインストールしてある場所を参照し、そ

Python3

を使用する

皆さんの計算機室アカウント

(

たぶん、

Python2.7

TA

の計算機室 アカウント

Python3

インストール済み

setup.sh

python3

を参照

(22)

( 演習室 PC 向け ) 環境設定

ダウンロードしたファイル内の

setup.sh

を実行

-

端末上でダウンロード・展開したディレクトリに移動した後、

- sh ./setup.sh - source ~/.bashrc

- Pythonの環境設定とpip(Pythonのパッケージ管理ソフト)がセット

アップされます。

正しく適用されたかのチェック

1. “python –V” 実行時 ”Python 3.6.・・・” と出力されればok 2. 端末上で “pip list” でエラーを吐かなければok

分かる人へ

- setup.sh では、~/.bashrc~/.config/pip/pip.conf を再設定しています - 即ち、自分自身で環境を弄っている人は要注意!!

- 誤って実行してしまったときは、バックアップを自動的に取るようになっ

上手く動かない場合は(早めに)TAを呼ぶ

(23)

( 演習室 PC 向け ) 環境設定(具体例 *

*__MACOSXはただのゴミ

*

あくまで一例 ダウンロード

解凍

ディレクトリ移動

セットアップ実行

(24)

( 演習室 PC 向け ) 環境設定

• 動かない人へ

– setup.shの対応シェルはbashのみです

• Bash 以外を使用している人へ

- 単にPATHを貼ってるだけなので、setup.shを参照して、自身が 使用しているシェルの設定ファイルを適当にいじってください

複数人が同時にアクセスすると上手くインストールできないこと があります (もしかして? → ベストエフォート)

– “pip list”でwarningが出る!

実用上は問題ありません。

鬱陶しい場合は、~/.config/pip(ディレクトリ)を作成した上で、

WebComp2020 内の.pip.conf pip.conf(ピリオドを取る)として コピーすると消せます。

上手く動かない場合は(早めに)TAを呼ぶ

(25)

pip に関して

• pip は python のパッケージ管理ソフトです。

• 使い方

インストールする

• pip install

入れたいパッケージ

–-user

探す

• pip search

探したいパッケージ

インストールした一覧を見る

• pip list

詳しくは

https://pip.pypa.io/en/stable/user_guide/

自分のディレクトリに インストールする

(26)

まずはサンプルプログラムを動かそう!

$ python search_job_json.py

飛行機 研究

2

件のお仕事が見つかりました。最初の

2

件を表示しています。

--- No. 1 ---

【職業】航空機・船舶技術者・研究者

【説明】航空機や船舶の技術開発や研究を行う

【資格】技術士<国>

【学問】機械工学 航空・船舶・自動車工学 システム・制御工学 電子工 学 環境工学 応用物理学

--- No. 2 ---

【職業】電気通信技術者・研究者

【説明】現代社会では欠かせない通信やネットワークに関する様々な技 術や研究開発を行う。

【資格】工業英語能力検定試験 電気通信の「工事担任者」<国> 電気 通信主任技術者<国>

【学問】通信工学 応用物理学

実行コマンド

残念ながらすぐには動かないのであしからず

(27)

サンプルプログラム (search_job_json.py: 1/2)

ウェブコンピューティング-プログラミング演習- 2020/12/02

27

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

"""

# python search_job_json.py     

"""

import sys  # 

import urllib.request #  URL import urllib.parse #  URL import json    #  JSON API

def create_work_info(index, work_node):

#Web

    return """­­­­­­ No. {} ­­­­­­

 {}

 {}

 {}

 {}""".format(index, #  No.

      work_node["name"], #        work_node["desc"], # 

      " ".join([l["name"] for l in work_node["license"]]), #        " ".join([s["name"] for s in work_node["subject"]])  #        )

def create_result_info(json_result):

#Web

    return "{} {} ".format(

      json_result["results"]["results_available"], #  ~

      json_result["results"]["results_returned"]   #  ~       )

def main():

    #  API Web

    url = "http://webservice.recruit.co.jp/shingaku/work/v1/?{}".format(

        urllib.parse.urlencode(

      {"key"     : "382312f6b1fe7a75",       #  API db*3+9﴾

       "keyword" : " ".join(sys.argv[1:]),   # 

       "format"  : "json"      #  JSON       }))

    f_url = urllib.request.urlopen(url).read()

    json_result = json.loads(f_url.decode("utf­8"))   #  JSON

    # 

    print(create_result_info(json_result))

    for index, work in enumerate(json_result["results"]["work"]): #enumerate  ﴾   index         print(create_work_info(index+1,work))

    return

(28)

サンプルプログラム (search_job_json.py: 2/2)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

"""

# python search_job_json.py     

"""

import sys  # 

import urllib.request #  URL import urllib.parse #  URL import json    #  JSON API

def create_work_info(index, work_node):

#Web

    return """­­­­­­ No. {} ­­­­­­

 {}

 {}

 {}

 {}""".format(index, #  No.

      work_node["name"], #        work_node["desc"], # 

      " ".join([l["name"] for l in work_node["license"]]), #        " ".join([s["name"] for s in work_node["subject"]])  #        )

def create_result_info(json_result):

#Web

    return "{} {} ".format(

      json_result["results"]["results_available"], #  ~

      json_result["results"]["results_returned"]   #  ~       )

def main():

    #  API Web

    url = "http://webservice.recruit.co.jp/shingaku/work/v1/?{}".format(

        urllib.parse.urlencode(

      {"key"     : "382312f6b1fe7a",       #  API db*3+9﴾

       "keyword" : " ".join(sys.argv[1:]),   # 

       "format"  : "json"      #  JSON       }))

    f_url = urllib.request.urlopen(url).read()

    json_result = json.loads(f_url.decode("utf­8"))   #  JSON

    # 

    print(create_result_info(json_result))

    for index, work in enumerate(json_result["results"]["work"]): #enumerate  ﴾  index         print(create_work_info(index+1,work))

    return

if __name__ == "__main__":

    main()

(29)

実際に動かしてみよう

ウェブコンピューティング-プログラミング演習- 2020/12/02

29

テキストエディタを起動し、サンプルプログラムを開く

– 取得した「リクルートのAPIキーに変更する」

プログラムは

utf-8 形式で保存する事

• 実行方法

python search_job_json.py

単語1 単語

2 …

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

"""

# python search_job_json.py     

"""

import sys  # 

import urllib.request #  URL import urllib.parse #  URL import json    #  JSON API

def create_work_info(index, work_node):

#Web

    return """­­­­­­ No. {} ­­­­­­

 {}

 {}

 {}

 {}""".format(index, #  No.

      work_node["name"], #        work_node["desc"], # 

      " ".join([l["name"] for l in work_node["license"]]), #        " ".join([s["name"] for s in work_node["subject"]])  #        )

def create_result_info(json_result):

#Web

    return "{} {} ".format(

      json_result["results"]["results_available"], #  ~

      json_result["results"]["results_returned"]   #  ~       )

def main():

    #  API Web

    url = "http://webservice.recruit.co.jp/shingaku/work/v1/?{}".format(

        urllib.parse.urlencode(

      {"key"     : "382312f6b1fe7a",       #  API db*3+9﴾

       "keyword" : " ".join(sys.argv[1:]),   # 

       "format"  : "json"      #  JSON       }))

    f_url = urllib.request.urlopen(url).read()

    json_result = json.loads(f_url.decode("utf­8"))   #  JSON

    # 

    print(create_result_info(json_result))

    for index, work in enumerate(json_result["results"]["work"]): #enumerate  ﴾  index         print(create_work_info(index+1,work))

    return

# APIキー(自分で取得する)

(30)

実際に動かしてみよう

$ python search_job_json.py

飛行機 研究

2

件のお仕事が見つかりました。最初の

2

件を表示しています。

--- No. 1 ---

【職業】航空機・船舶技術者・研究者

【説明】航空機や船舶の技術開発や研究を行う

【資格】技術士<国>

【学問】機械工学 航空・船舶・自動車工学 システム・制御工学 電子工 学 環境工学 応用物理学

--- No. 2 ---

【職業】電気通信技術者・研究者

【説明】現代社会では欠かせない通信やネットワークに関する様々な技 術や研究開発を行う。

【資格】工業英語能力検定試験 電気通信の「工事担任者」<国> 電気 通信主任技術者<国>

【学問】通信工学 応用物理学

ターミナル上

(31)

サンプルプログラムについて

• 利用している Web サービスの仕様は?

どんな検索ができるのか?

どんな出力をするのか?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

"""

# python search_job_json.py     

"""

import sys  # 

import urllib.request #  URL import urllib.parse #  URL import json    #  JSON API

def create_work_info(index, work_node):

#Web

    return """­­­­­­ No. {} ­­­­­­

 {}

 {}

 {}

 {}""".format(index, #  No.

      work_node["name"], #        work_node["desc"], # 

      " ".join([l["name"] for l in work_node["license"]]), #        " ".join([s["name"] for s in work_node["subject"]])  #        )

def create_result_info(json_result):

#Web

    return "{} {} ".format(

      json_result["results"]["results_available"], #  ~

      json_result["results"]["results_returned"]   #  ~       )

def main():

    #  API Web

    url = "http://webservice.recruit.co.jp/shingaku/work/v1/?{}".format(

        urllib.parse.urlencode(

      {"key"     : "382312f6b1fe7a",       #  API db*3+9﴾

       "keyword" : " ".join(sys.argv[1:]),   # 

       "format"  : "json"      #  JSON       }))

    f_url = urllib.request.urlopen(url).read()

    json_result = json.loads(f_url.decode("utf­8"))   #  JSON

    # 

    print(create_result_info(json_result))

    for index, work in enumerate(json_result["results"]["work"]): #enumerate  ﴾  index         print(create_work_info(index+1,work))

    return

if __name__ == "__main__":

    main()

サンプルプログラムの

API

について 話すが、見るべき箇所はどの

API

でもだいたい同じ

(32)

Web サービスの仕様(入力)

http://webservice.recruit.co.jp/shingaku/reference.html

実態は「

URL

」にアクセスしているだけ

(つまり、Webブラウザで正しく入力 すれば、何かしらの出力が返って来る)

API

エンドポイント

+

検索クエリ」で 実際にアクセスする

URL

を作成

APIエンドポイント

検索クエリ

*検索クエリは各パラメータが

「必須かどうか」に着目する

(33)

Web サービスの仕様(出力)

xml

の出力例)

階層構造として出力される

(34)

(2) プログラミング課題 ()

• サンプルプログラムを参考に,学校検索を行うプ ログラムを作成せよ.(検索クエリの種類は問わ ない)

プログラムの概要(特に何を入出力とするのか)

利用した

Web

サービスの情報

プログラムのソース

実行例(3つ以上)

考察

工夫した点,苦労した点,問題,感想等

レポートの内容

(35)

根の出力(例)

• 住所を入力するとその住所を含む学校を出力する プログラム

python search_school.py 仙台市青葉区荒巻

3件の学校が見つかりました。最初の3件を表示しています。

--- No. 1 ---

【 学 校 】宮城教育大学

【キャンパス】

【 学 部 】教育学部 --- No. 2 ---

【 学 校 】東北大学

【キャンパス】片平キャンパス 雨宮キャンパス 星陵キャンパス 川内キャンパス 青葉山キャンパス

【 学 部 】文学部 教育学部 法学部 経済学部 理学部 医学部 歯学部 薬学部 工学部 農学部 --- No. 3 ---

【 学 校 】赤門鍼灸柔整専門学校

【キャンパス】

【 学 部 】柔道整復科 柔道整復科第二部 鍼灸科第二部 鍼灸指圧科 鍼灸科第一部

(36)

課題(根)に関して

✓ リクルートの学校検索 API を使うのが便利

– http://webservice.recruit.co.jp/shingaku/school/v1

✓ 改造方法

1.

サンプルプログラムの検索クエリをなげる箇所を学校 検索に変更

2.

出力の解析部分

(create_work_info)

を学校検索

API

の出 力をするように変更

ウェブコンピューティング-プログラミング演習- 2020/12/02

36

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

"""

# python search_job_json.py     

"""

import sys  # 

import urllib.request #  URL import urllib.parse #  URL import json    #  JSON API

def create_work_info(index, work_node):

#Web

    return """­­­­­­ No. {} ­­­­­­

 {}

 {}

 {}

 {}""".format(index, #  No.

      work_node["name"], #        work_node["desc"], # 

      " ".join([l["name"] for l in work_node["license"]]), #        " ".join([s["name"] for s in work_node["subject"]])  #        )

def create_result_info(json_result):

#Web

    return "{} {} ".format(

      json_result["results"]["results_available"], #  ~       json_result["results"]["results_returned"]   #  ~       )

def main():

    #  API Web

    url = "http://webservice.recruit.co.jp/shingaku/work/v1/?{}".format(

        urllib.parse.urlencode(

      {"key"     : "382312f6b1fe7a",       #  API db*3+9﴾

       "keyword" : " ".join(sys.argv[1:]),   # 

       "format"  : "json"      #  JSON       }))

    f_url = urllib.request.urlopen(url).read()

    json_result = json.loads(f_url.decode("utf­8"))   #  JSON

    # 

    print(create_result_info(json_result))

    for index, work in enumerate(json_result["results"]["work"]): #enumerate  ﴾  index         print(create_work_info(index+1,work))

    return

↓ まずこの部分を書き換える

(37)

注意

• API にはアクセス制限がある場合が多い

短時間に何度もクエリを飛ばさない事

– MediaWiki API

• There is no hard and fast limit on read requests, but we ask that you be

considerate and try not to take a site down. Most sysadmins reserve the right to unceremoniously block you if you do endanger the stability of their site.

– Google Custom Search API

• For CSE users, the API provides 100 search queries per day for free.

• 多くの API は使用するために登録が必要

リクルート,食べログ,

twitter, …

登録からAPIキー発行まで時間のかかる場合も(〜二週間?)

課題を出す直前の登録だとキーの取得が提出までに間に合わない 事も!?

(38)

今後の予定

• 12/2( 今回 )

課題説明・準備など

• 12/16( 水 ) # 2週間後 # (3分程度)

中間発表(主に「

(1)

調査課題」の発表と、「

(2)

プログラ ミング課題」の進捗状況を報告してもらいます)

• 1/13( 水 ) # 4週間後 # (3分程度)

最終発表(中間発表会の「

(1)

調査課題」を踏まえ、「

(2)

プログラミング課題」の進捗状況を報告してもらいます)

• 12/9( 水 ) ・ 12/23( 水 ) ・ 1/6( 水 ) 演習

• 1/15( 金 ) 17:00

課題提出〆切

(39)

演習

• わからないところがあれば TA にどんどん聞いてく ださい!

この

API

使いたいんだけどどうやって使えばいいのかわ かんない

……

サンプルのこの部分ってどういう意味?

そもそも

Python

がわからない などなどお気軽に!

• TA と連絡先

(基本は全員に

Cc

してください)

浅妻 佑弥:

asazuma.yuya.r7 [at] dc.tohoku.ac.jp

• Li Yunmeng

li.yunmeng.r1 [at] dc.tohoku.ac.jp

(40)

補足: Python に関して (1/4)

• for 文や if 文の開始時に「 { (e.g. C 言語 ) 」の代わ りに「 : 」を置き,インデントで範囲を指定

• for 文は配列(リスト)の要素を順に取り出す

for i in [-1,0,1,2]:

if I > 0:

c += 1 print(i)

print(”Number of N is {}”).format(c)

インデント→ 出力

-1 0 1 2

Number of N is 2

☓ループの回数 ○配列

実行結果

(41)

補足: Python に関して (2/4)

• def( 引数 ) は関数定義

def create_work_info(index, work_node):

-

2つの引数を入力とする関数

create_work_info

• json 形式はハッシュ ( 辞書 ) 形式として格納される

ハッシュ:「

key

」 と「

value

」のペア

D = { ”code”: ”a12”, ”urls”:{”mobile”: ”http…”, ”pc”:” …}

print(D[“code”]) -> “a12”

リクルートの

API

の出力の仕様を見ながら

create_work_info

”license”

”subject”

をいじる

ハッシュのvalueにハッシュを記述可能

階層構造を表現 key value

(42)

補足: Python に関して (3/4)

• enumerate は現在のループ番号を取得する

for n, i in enumerate([”a”,”b”,”c”]):

print n, i

出力

0 a

1 b 2 c

• トラブルシューティング

多いエラー

1.

誤字・脱字

2.

全角スペース

3.

インデント

4.

文字コード誤り

エラー出力を確認

- エラーの場所が分かる

解決できなければ、遠慮なく

TA

に聞く

-

バグ取りに「1人で」長時間悩まない!

n

にループ番号

i

にリストの要素 が格納される

90%

(43)

補足: Python に関して (4/4)

• Python2 系について

– Python2

系のサポート期限は

2020

年まで

– Python2

系と

3

系では文法も違う

参照

関連したドキュメント

В данной работе приводится алгоритм решения обратной динамической задачи сейсмики в частотной области для горизонтально-слоистой среды

Keywords: continuous time random walk, Brownian motion, collision time, skew Young tableaux, tandem queue.. AMS 2000 Subject Classification: Primary:

This paper is devoted to the investigation of the global asymptotic stability properties of switched systems subject to internal constant point delays, while the matrices defining

This paper presents an investigation into the mechanics of this specific problem and develops an analytical approach that accounts for the effects of geometrical and material data on

While conducting an experiment regarding fetal move- ments as a result of Pulsed Wave Doppler (PWD) ultrasound, [8] we encountered the severe artifacts in the acquired image2.

If you are expecting the delay of resignation certificate submission, please enclose the memorandum clarifying the reason that you cannot submit,and the approximate date when

When relativistic quantum mechanics and field the- ory emerged, the half-integer internal angular momentum was interpreted in terms of the complex special linear group SL(2, C ) as

Then α i − γ i is the number of carries occurring in the i-th block, but only if no carry comes out of the previous block.. If a carry comes out of the previous block, the situation