今回やること
複数の問題を順番に出すクイズゲームを作ります。
今回は動作確認しやすいように、回答もプログラム内に用意します。
クイズゲームは、問題と正解を辞書で持ち、リストを順に回して回答を比較し、正解数を数えるアプリです。辞書操作と比較演算子を先に確認します。
完成コード
quiz_game.py を作ります。
questions = [
{"question": "Pythonの拡張子は?", "answer": ".py", "user_answer": ".py"},
{"question": "リストを作る記号は?", "answer": "[]", "user_answer": "[]"},
{"question": "関数を作るキーワードは?", "answer": "def", "user_answer": "def"},
]
score = 0
for item in questions:
print(item["question"])
if item["user_answer"] == item["answer"]:
print("正解")
score += 1
else:
print("不正解")
print("----------")
print(f"結果: {score}/{len(questions)}問正解")
動作確認
python quiz_game.py
結果: 3/3問正解 と表示されれば成功です。
実際に入力する形へ進む
固定したuser_answerの代わりに、ループ内で次のように入力を受け取ります。
user_answer = input("答え: ").strip()
if user_answer == item["answer"]:
print("正解")
score += 1
else:
print(f"不正解。正解は {item['answer']} です")
printとinputを確認し、正解と不正解を少なくとも1回ずつ試します。英字の大小を無視するかは仕様として決め、必要なら比較する両方へcasefold()を使います。
コードの考え方
- 1問分の情報は辞書で表します
- 問題一覧はリストにします
- 正解なら
score += 1で点数を増やします len(questions)で問題数を表示します
よくあるエラー
| エラー | 原因 | 修正 |
|---|---|---|
KeyError | キー名が違う | question, answer を確認 |
| 点数が増えない | score += 1 がない | 正解時に加算する |
| 全部不正解 | 文字列が一致していない | 空白や大文字小文字を確認 |
score = 0をループ内へ置くと問題ごとに0へ戻ります。問題リストが空なら0/0問正解になるため、まず1問だけで動かしてから増やしてください。
練習
- 問題を5問に増やす
- 1問だけ不正解にして動きを見る
input()を使う形に変える
次のステップ
点数をもとに判定する処理は Pythonミニ制作:成績判定ツール に進みます。
式をランダムに生成する方式は計算ドリルで練習できます。