01 / 07
辞書で「会員」を表す
第2章で辞書を覚えたとき、こう思ったかもしれない。「人やお店を表すなら、これで足りるじゃないか」と。
実際、しばらくは足りる。会員ひとりぶんの情報は、辞書ならこう書けるね。
kaiin = {"namae": "あおい", "nensuu": 3}print(kaiin["namae"])print(kaiin["nensuu"])実行結果
あおい 3
クラス
INPUT · スライド
01 / 07
第2章で辞書を覚えたとき、こう思ったかもしれない。「人やお店を表すなら、これで足りるじゃないか」と。
実際、しばらくは足りる。会員ひとりぶんの情報は、辞書ならこう書けるね。
kaiin = {"namae": "あおい", "nensuu": 3}print(kaiin["namae"])print(kaiin["nensuu"])実行結果
あおい 3
02 / 07
データができたら、次はそれを使う処理だね。まずは名前を整えて表示する処理を、第3章でやった関数にまとめてみよう。
辞書を丸ごと受け取って、中から必要なものを取り出す形にしたよ。
def hyouji(kaiin): namae = kaiin["namae"] return f"{namae}さん"kaiin = {"namae": "あおい", "nensuu": 3}print(hyouji(kaiin))実行結果
あおいさん
03 / 07
会員でやりたいことは表示だけじゃない。年会費を計算したい。退会できるかも判定したい。
そのたびに、辞書を受け取る関数が1つずつ増えていくよ。
def nenkaihi(kaiin): if kaiin["nensuu"] >= 3: return 4000 return 5000kaiin = {"namae": "あおい", "nensuu": 3}print(nenkaihi(kaiin))実行結果
4000
04 / 07
関数が3つになった。そのどれもが「会員の辞書は namae と nensuu を持つ」ということを知っている必要がある。
でも辞書そのものは、関数とはまったく別の場所に置かれているよね。「会員とは何か」がファイルのあちこちに散らばっているんだ。
def hyouji(kaiin): namae = kaiin["namae"] nensuu = kaiin["nensuu"] return f"{namae}さん(会員{nensuu}年目)"def nenkaihi(kaiin): if kaiin["nensuu"] >= 3: return 4000 return 5000def taikai_dekiru(kaiin): return kaiin["nensuu"] >= 1kaiin = {"namae": "あおい", "nensuu": 3}print(hyouji(kaiin))print(nenkaihi(kaiin))print(taikai_dekiru(kaiin))実行結果
あおいさん(会員3年目) 4000 True
05 / 07
"nensuu" という名前を "nen" に変えたくなったとしよう。直すのは辞書の1か所……ではない。
kaiin["nensuu"] と書いてある関数を全部さがして回ることになる。1つでも見落とすと、そこだけが KeyError で落ちるよ。
kaiin = {"namae": "あおい", "nen": 3}print(kaiin["nensuu"])実行結果
KeyError: 'nensuu'
06 / 07
リストに会員をたくさん入れれば、まとめて処理できる。それはいい。
でも「会員とはこういうものだ」と書いてある場所は、やっぱりどこにも無い。辞書の形は、書いた人の記憶の中にしかないんだ。だから項目を入れ忘れた辞書も、平気で作れてしまう。
def hyouji(kaiin): namae = kaiin["namae"] nensuu = kaiin["nensuu"] return f"{namae}さん(会員{nensuu}年目)"kaiins = [ {"namae": "あおい", "nensuu": 3}, {"namae": "ひなた", "nensuu": 1},]for kaiin in kaiins: print(hyouji(kaiin))実行結果
あおいさん(会員3年目) ひなたさん(会員1年目)
07 / 07
散らばったものを集める仕組みが、この章で学ぶクラスだよ。
「会員とはこういうデータを持ち、こういうことができるものだ」と一か所に書いておく。そうすれば、形を変えたいときに見る場所は1つで済む。
このレッスンではまだ class を書かない。いまの不便さを手で味わっておくのが目的だよ。次のレッスンから、これを解決していこう。