Follow twitter

退屈なことはPythonにやらせよう_演習5.6.2

今回はPythonに教材として有名な「退屈なことはPythonにやらせよう」の
演習プロジェクト5.6.2をやってみましたので解答例を載せたいと思います。

5.6演習プロジェクト

5.6.2 ファンタジーゲームの持ち物リスト用にリストから辞書に移す関数

問題文や詳細は、本書をご確認ください。

解答例

#追加されるアイテムのリストから現状のアイテム辞書に追加する関数を作成
def add_to_inventory(inventory, added_items):
    for i in added_items:#①
        inventory.setdefault(i, 0)#②
        inventory[i]=inventory[i]+1#③
#アイテムのトータル数を表示する関数を作成
def display_inventory(inventory):
    print("持ち物リスト:")
    item_total = 0
    for k, v in inventory.items():
        print(str(v) + " " + str(k))
        item_total = item_total + v
    print("アイテム総数: " + str(item_total))

inv = {"金貨": 42, "ロープ": 1}#a
dragon_loot = ["金貨", "手裏剣", "金貨", "金貨", "ルビー"]#b
add_to_inventory(inv, dragon_loot)
display_inventory(inv)

ポイントは
・今あるアイテムは辞書でまとめられている。(a)
・追加アイテムはリスト形式で追加される。(b)
・追加アイテムのリストを頭から順に1つずつ辞書に追加していく。
 →for 分でリストを順に抜き出す。(
・リストから抜き出したアイテムが持ってる辞書のkeyになければ、
新規の辞書kyeとvalueを設定する。
 →setdefaultメソッドを使用。第2引数は初期値設定なので0とする。(
・辞書は[key]でvalueを返すので,keyのvalue値を1つインクリメントする(

実行結果

持ち物リスト:
45 金貨
1 ロープ
1 手裏剣
1 ルビー
アイテム総数: 48

終わりに

他にも色々な解答例があるかと思いますが、ご参考にしてみてください。

Have a nice python life!