フェイス・ソリューション・テクノロジーズ株式会社 IS 本部 OS ユニットの HRです。一生遊んで暮らすをモットーに毎日仕事に勤しんでおります。
今回はPython学習ということで、辞書を使用したプログラムを書きました。
Pythonは初学者ですので、至らない点も多くありますがご了承ください。
辞書プログラムのルール
今回の辞書プログラムのルールを記載します。
まず、以下の辞書データが保存されております。
{'first_name': '松本', 'second_name': '花子', 'age': '20', 'job': '主婦', 'money': 200000, 'kill': 0, 'income': 10000}
{'first_name': '山田', 'second_name': '太郎', 'age': '20', 'job': '大学生', 'money': 10000, 'kill': 0, 'income': 5000}
{'first_name': '大木', 'second_name': '健二', 'age': '22', 'job': '大学生', 'money': 10000, 'kill': 0, 'income': 5000}
{'first_name': '岡田', 'second_name': '丘子', 'age': '20', 'job': '主婦', 'money': 200000, 'kill': 0, 'income': 10000}
{'first_name': '藤堂', 'second_name': '平助', 'age': '20', 'job': '武士', 'money': 0, 'kill': 100, 'income': 0}
1ターンで1年経過します。
1年経過するとそれぞれの人のincomeの分moneyが増加します。
1年経つと武士以外の人がランダムで武士に斬られます。
武士に斬られた人のデータは消えます。
斬られた人がその時に持っていたmoneyの分だけ武士のmoneyが増えます。
武士のmoneyが2万を超えると武士は満足して去っていきます。
それまで生き残っていた人はゲームクリアです。
VSCodeに書いてみた
まず、1ターンで1年経過しますので、すべての辞書に新たなキーtimeと値0を追加しました。
human_listに辞書を代入しております。
for human5 in human_list:
human5.update({"time" : 0})
print(human5)
1ターンで1年経過するので、timeに365日を足します。
また、1年経過するとincomeがmoneyに追加されるので追加する処理を書きます。
for human4 in human_list:
human4["time"] += 365
human4["money"] += human4["income"]
print(human4)
武士が切る人を選択しますが、武士本人が選ばれると自害してしまうため、武士本人を除外してからrandomchoiceで選択します。
randomモジュールを呼び出すためのimportもお忘れなく。
import random
jogai = ["藤堂"]
human_list2 = [human_list for human_list in human_list if human_list["first_name"] not in jogai]
randomhuman = random.choice(human_list2)
print(randomhuman["first_name"] + "が選ばれました")
randomchoiceで選択された辞書データをrandomhumanに代入しておき、randomhumanのmoneyを武士に追加します。
for human6 in human_list:
if randomhuman["first_name"] == "松本" or randomhuman["first_name"] == "山田" or randomhuman["first_name"] == "大木" or randomhuman["first_name"] =="岡田":
if human6["job"] == "武士":
human6["money"] += randomhuman["money"]
print(human6)
human_listの中にrandomhumanが存在した場合、human_listから削除します。
下記プログラムではelseにて存在しない場合を定義してますが、human_listの中にある辞書からランダムで選択されるため、本来なら必要ありません。
if randomhuman in human_list:
print(randomhuman["first_name"] + "の存在を確認しましたので、削除します")
human_list.remove(randomhuman)
for human6 in human_list:
print(human6)
else:
print(randomhuman['first_name'] + "の存在を確認出来ませんでした")
human_listにある武士の金額が2万円を超えているか確認します。2万を超えているなら終了、超えていないなら再度抽選を行います。
for human7 in human_list:
if human7["job"] == "武士":
if human7["money"] >= 20000:
print("ゲームクリア 武士の合計金額は" + str(human7["money"]) + "円です")
exit()
上記プログラムはループになっていないため、while Trueを追加することをお忘れなく。
実行結果はこちら
武士の金額が2万以下ならループし、2万を超えたらゲームとなっております。
最後に
今回は辞書を使用したプログラムに挑戦してみました。
ルール通りに出来たとは思いますが、今後は短い内容で簡潔にプログラムが書けるように精進したいと思います。
コメント