View on GitHub

lectures

Python(2)

python/Home


前回の復習

関数の定義

def hello():
    print("Hello world")
import hoe
hoe.hello()
from hoe import hello
hello()

プログラムの使いまわし

書き方の作法

def work():
    作業内容のプログラム

if __name__ == "__main__":
    work()

例外

fn = "filename.txt"
try:
    fp=open(fn, "r") # この範囲で起きる例外を監視
except IOError: # この名前の例外が起きたら
    print("Cannot open file %s" % fn) # ここを実行
print("next step")

例外の使い方

独自クラスの設計

プログラムの前にすること

仕事の依頼方法を決定

クラス設計の例

クラスが持つべき機能

定義方法

class TestScore: # クラス定義の開始
    # コンストラクタ
    def __init__(self, fn): # 第一引数は常に self。いわゆる引数は 2個目以降に書く
        self.scores = {} # インスタンス変数
        fp = open(fn, "r") # ローカル変数
        for s in fp:
            a = s.rstrip.split(",")
            self.scores[a[0]] = int(a[1])
        fp.close

    # メソッド群
    def num(self):
        return len(self.scores)

    def names(self):
        return self.scores.keys()

    def score(self, n):
        if n in self.scores:
            return self.scores[n]
        else:
            return None

使い方

import TestScore # ファイルを読み込み

def work():
    sc = TestScore.TestScore("English.csv") # インスタンスを生成
    print("生徒数 : %d" % sc.num()) # メソッド呼び出し
    for p in sc.names(): # メソッド呼び出し
        print("%s -> %d" % (p, sc.score(p))) # メソッド呼び出し

if __name__ == "__main__":
    work()

2 教科のときは

import TestScore
def work():
    eng = TestScore.TestScore("English.csv") # 英語管理係
    math = TestScore.TestScore("Math.csv") # 数学管理係
    for p in eng.names():
        s = (eng.score(p) + math.score(p)) / 2.0 # 英語の点と数学の点を取得する。
        print("%s : %d" % (p, s))

if __name__ == "__main__":
    work()

実際に作ってみましょう

スロットを埋めていく方法

項目
種類 チーズバーガー
個数 1 個
店内か?  

今回は

タスクの定義ファイル例

BRING_ITEM (タスク名)
LOCATION (スロット名) : kitchen living dining (単語リスト)
WHO : Ken Mike Elizabeth John Andrew Robert
ITEM : coffee tea apple
(この例は3スロット)

どうクラスを設計するか

全体のアルゴリズム

タスク管理係がすること

みんなで協力してシステムを完成させましょう


python/Home