見出し画像

【なんとなく知ってるAI用語〈Python超初心者73〉】dict × randomでランダムクイズ!

dict × randomでランダムクイズを作ろう!🎲


前回は、辞書とfor文を使ってクイズを順に出す方法を学びました。
今回は、同じ辞書データを「ランダム」に使う練習です。

🔹 サンプルコード

import random

quiz = {
    "りんごの色は?": "赤",
    "バナナの色は?": "黄",
    "ぶどうの色は?": "紫"
}

question = random.choice(list(quiz.keys()))
print(question)
user = input("答えを入力してね:")

if user == quiz[question]:
    print("正解!🎉")
else:
    print(f"残念…正解は {quiz[question]} でした!")

🔹 実行例

ぶどうの色は?
→ 紫
正解!🎉

次にもう一度実行すると…

バナナの色は?
→ 黄
正解!🎉

毎回、出題が変わります🎲

🧩 仕組みの説明

import random              ランダム機能を使うための宣言
quiz = {...}                     質問と答えのセット(辞書)
quiz.keys()                    辞書の「質問」だけ取り出すlist(quiz.keys())             キーをリストに変換(choiceで使える形に)
random.choice(...)        その中から1つをランダムに選ぶ!

💡 なぜ list(quiz.keys()) が必要?

random.choice() は「リスト」や「タプル」などの順序あるデータに使えます。
でも quiz.keys() は“辞書ビュー”という少し特殊な形。
そのため、一度リストに変換してから使う必要があります。

🪄 まとめ

dict                                  データのセット(質問と答え)random.choice()              1つをランダムに選ぶ
input()                              答えを入力する
if文                                   判定を行う

✏️ おさらいのひとこと
Pythonの random は、AIが“選ぶ”動きを学ぶのにぴったり。
人間でいう「気分」や「選択」を、コンピュータに少し体験させてみましょう🍀


例:🎲 運命の宝箱:ランダムなアイテム取得

【今回の呪文】

random.choice(dict.keys()) を使うと、辞書のキー(名前)の中から一つをランダムに選べます。
📜 物語:謎の宝箱
冒険者は、森の奥で古びた宝箱を発見しました。中には、ランダムで何らかのアイテムが入っているようです。何が出るかは運次第!

import random 

# 宝箱の中身と出現確率(キーが出現するアイテム名、値がその重み)
 treasure_loot = {
    "伝説の剣": 1, # レアなアイテム 
    "普通の薬草": 10, # よく出るアイテム 
    "銀のコイン": 5, 
    "毒のキノコ": 2 # ハズレ枠
 }

# 宝箱からランダムに取り出すためのキーのリストを作成
# .keys()でキーだけを取得し、リストに変換
loot_items = list(treasure_loot.keys())


# random.choice()で、キーの中から一つをランダムに選ぶ
gained_item = random.choice(loot_items)


print("▼ 宝箱を開ける…!")
print(f"『{gained_item}』を手に入れた!")


# 取得したアイテムを使って、その効果を辞書から取得して表示
# 宝箱の中身の辞書から、選ばれたアイテムの値(出現率ではない、別の情報と仮定)を取り出す
# ここでは、わかりやすさのため「効果」が別の辞書にあると仮定します
item_effects = {
    "伝説の剣": "攻撃力が+50される",
    "普通の薬草": "HPが10回復する",
    "銀のコイン": "資金が10G増える",
    "毒のキノコ": "HPが-5される"
}

# 取得したアイテム名を使って、その効果を辞書から取り出す
effect = item_effects.get(gained_item, "効果不明")

🗝️ 呪文の解説

  1. list(treasure_loot.keys()):   random.choice()はリストやタプルからしか要素を選べません。そのため、まず辞書のキー(アイテム名)だけを抜き出し、リストに変換しています。

  2. random.choice(loot_items):  このリストの中から、ランダムに一つのアイテム名(キー)が選ばれ、gained_itemに代入されます。

  3. item_effects.get(gained_item, "効果不明"):  選ばれたアイテム名(キー)を使って、別の辞書item_effectsからその効果(値)を安全に取り出しています。

このように、dictでデータ(アイテム、効果、価格など)を管理し、randomでどのデータを操作するかを決定するという使い方は、ゲーム開発において非常に一般的です。


いいなと思ったら応援しよう!

こばみお|生成AIとおしゃべりしながらの、50代のゆるチャレンジ。 よろしければ応援お願いします!いただいたチップはクリエイターとしての活動に使わせていただきます。