【なんとなく知ってる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, "効果不明")
🗝️ 呪文の解説
list(treasure_loot.keys()): random.choice()はリストやタプルからしか要素を選べません。そのため、まず辞書のキー(アイテム名)だけを抜き出し、リストに変換しています。
random.choice(loot_items): このリストの中から、ランダムに一つのアイテム名(キー)が選ばれ、gained_itemに代入されます。
item_effects.get(gained_item, "効果不明"): 選ばれたアイテム名(キー)を使って、別の辞書item_effectsからその効果(値)を安全に取り出しています。
このように、dictでデータ(アイテム、効果、価格など)を管理し、randomでどのデータを操作するかを決定するという使い方は、ゲーム開発において非常に一般的です。
いいなと思ったら応援しよう!
よろしければ応援お願いします!いただいたチップはクリエイターとしての活動に使わせていただきます。
