今回やること
ランダムな数字を使って、計算ドリルを作ります。
入力待ちにすると検証しづらいため、今回は答えもプログラム内で確認する形にします。
計算ドリルは、乱数で式を作り、input()の値を整数へ変換して正解と比較し、正解数を増やすアプリです。まず乱数の基本と数値計算を確認してください。
完成コード
math_drill.py を作ります。
import random
def create_question():
left = random.randint(1, 9)
right = random.randint(1, 9)
answer = left + right
return left, right, answer
def check_answer(answer, user_answer):
return answer == user_answer
random.seed(1)
for number in range(1, 4):
left, right, answer = create_question()
user_answer = answer
result = check_answer(answer, user_answer)
print(f"第{number}問: {left} + {right} = {user_answer}")
print("正解" if result else "不正解")
動作確認
python math_drill.py
シード(乱数の並びを固定する値)付きの現在のコードでは、次の3問と正解が表示されれば問題生成と判定関数の確認は成功です。
第1問: 3 + 2 = 5
正解
第2問: 5 + 2 = 7
正解
第3問: 8 + 8 = 16
正解
入力して答える形へ進む
上のコードが動いたら、ループ内のuser_answer = answerを次へ置き換えます。
user_answer = int(input(f"第{number}問: {left} + {right} = "))
数字以外を入力するとValueErrorになります。入力と数値変換はprintとinput、失敗時に再入力させる方法はtry・exceptで段階的に追加します。
コードの考え方
random.randint(1, 9)で1〜9の整数を作りますcreate_questionは問題作成を担当しますcheck_answerは答え合わせを担当しますrandom.seed(1)は結果を検証しやすくするために入れています
よくあるエラー
| エラー | 原因 | 修正 |
|---|---|---|
NameError | import random がない | 先頭に書く |
| 答えが合わない | 足し算以外に変えた | 計算式を確認 |
| 毎回結果が違う | ランダムの仕様 | 練習中は seed を使う |
練習
- 問題数を5問に増やす
- 引き算ドリルに変える
- 正解数を数える
固定問題をリストで管理する方式はクイズゲームで比較できます。
次のステップ
次は、数字の合計を扱う簡単な家計簿へ進みます。