Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでランダムな四則演算クイズを作ろう!基本プログラミング課題の解き方

このチュートリアルでは、Pythonを使ったプログラミング課題として、「ランダムに出題される算術クイズ」の解決策を実装していきます。初心者の方でも理解しやすいよう、コードの構造とポイントを丁寧に解説します。

課題の内容

今回作成するプログラムには、次のような要件があります。

  • 足し算・引き算・掛け算・割り算などの基本的な算術演算を含む問題をランダムに生成する
  • ユーザーが出題数を指定できる
  • 各問題に対してユーザーがキーボードから解答を入力する
  • すべての問題が終わった時点で合計スコアを表示する

それでは、実際のコードを見ていきましょう。

サンプルコード

# randomモジュールとoperatorモジュールをインポート
import random
import operator
# メイン関数:出題する問題数を受け取る
def main(n):
    print("クイズへようこそ\n小数第2位までの数値で解答してください")
    # スコアを0で初期化
    score = 0
    # n問出題するためのループ
    for i in range(n):
        # 問題の正誤と正答を取得
        is_correct, answer = question(i)
        # 正解したかどうかを判定
        if is_correct:
            # 正解ならスコアを+1
            score += 1
            print('正解!おめでとうございます!')
        else:
            # 不正解の場合は正答を表示
            print(f'不正解です! 正しい答え: {answer}')
    # 合計スコアを表示
    print(f'合計スコア: {score}')
# 問題を出題して採点する関数
def question(n):
    # generate_question()から正答を取得
    answer = generate_question()
    # ユーザーから解答を入力してもらう
    user_answer = float(input("解答: "))
    # 正誤と正答をmain()に返す
    return user_answer == answer, answer
# ランダムな問題を生成する関数
def generate_question():
    # ランダムに選ぶ演算子を定義
    operators = {
        '+' : operator.add,
        '-' : operator.sub,
        '*' : operator.mul,
        '/' : operator.truediv,
        '//' : operator.floordiv,
        '%' : operator.mod
    }
    # 式に使う数字(0〜9)のリスト
    nums = [i for i in range(10)]
    # numsから2つの乱数を選択
    _1, _2 = nums[random.randint(0, 9)], nums[random.randint(0, 9)]
    # 演算子の中からランダムに1つ選択
    symbol = list(operators.keys())[random.randint(0, 5)]
    # 答えを計算(小数第2位まで丸める)
    answer = round(operators.get(symbol)(_1, _2), 2)
    print(f'{_1} {symbol} {_2}?')
    return answer
if __name__ == '__main__':
    main(5)

コードのポイント

このプログラムは、役割ごとに3つの関数へ分割されているのが特徴です。

  • main(n):全体の進行を管理するメイン関数。出題数を受け取り、スコアの集計と最終結果の表示を担当します。
  • question(n):1問を出題し、ユーザーの入力と正答を比較して正誤を判定します。
  • generate_question()randomモジュールで2つの数値(0〜9)と6種類の演算子(+, -, *, /, //, %)をランダムに選び、round()で小数第2位まで丸めた答えを計算します。

特に注目したいのはoperatorモジュールの活用法です。operator.addoperator.mulなどは、演算子そのものを関数として扱えるため、辞書に登録しておけば記号に対応する計算処理を動的に呼び出せます。if文で場合分けするよりも簡潔で拡張性の高い実装になります。

実行結果

上記のコードを実行すると、たとえば次のように動作します。

クイズへようこそ
小数第2位までの数値で解答してください
5 + 7?
解答: 12
正解!おめでとうございます!
9 / 9?
解答: 1
正解!おめでとうございます!
4 + 7?
解答: 11
正解!おめでとうございます!
6 // 6?
解答: 1.0
正解!おめでとうございます!
9 % 3?
解答: 0
正解!おめでとうございます!
合計スコア: 5

まとめ

今回は、Pythonのrandomモジュールとoperatorモジュールを組み合わせて、ランダムに出題される四則演算クイズを作成しました。関数ごとに役割を分担することで、読みやすく保守しやすいコードになっています。

さらに機能を拡張するなら、次のようなアイデアが考えられます。

  • 扱う数値の桁数を増やして難易度を上げる
  • 「かんたん・ふつう・むずかしい」などレベル別の出題に対応する
  • 制限時間を設けてタイムアタック形式にする
  • スコアをファイルに保存して履歴を残せるようにする

ぜひ自分なりに改良を加えてみてください。最後までお読みいただきありがとうございました。不明な点があれば、コメント欄でお気軽にご質問ください。

  1. Windowsで使えるPython開発用IDEおすすめ7選|PyCharmからAtomまで徹底解説

    Windows環境でPythonの開発を始めるとき、最初に悩むのが「どのIDE(統合開発環境)を選ぶべきか」という問題です。IDEはコードの編集・実行・デバッグなどをひとつのアプリケーションで完結できる強力なツールであり、選択次第で開発効率が大きく変わります。 本記事では、Windowsで利用できる代表的なPython対応IDEを厳選し、それぞれの特徴やメリットをわかりやすく解説します。 PyCharm PyCharmはJetBrains社が開発する、Python開発で最も人気のあるIDEのひとつです。無料のコミュニティ版と有料のプロフェッショナル版が用意されており、初心者からプロフェッショ

  2. PythonのTurtleグラフィックス入門!基本メソッド一覧と図形描画サンプルコード集

    Turtle(タートル)はPythonに標準搭載された特殊な機能で、専用の描画ウィンドウ上に簡単に図形を描くことができるモジュールです。 使い方はとてもシンプルです。まずturtleモジュールをインポートし、次にウィンドウ(Screen)を作成、その後タートルオブジェクトを生成します。あとは各種メソッドを呼び出すだけで、キャンバス上に自由に描画できます。この記事では、よく使われるメソッドの一覧表と、正方形・星・六角形などの具体的な描画例をサンプルコード付きで解説します。 主なTurtleメソッド一覧 メソッド パラメータ 説明 Turtle() なし 新しいタートルオブジェクトを作成