pythonで問題集作ってみたPART2

 はじめまして、にわこまです。今回は以前作った問題集を少し改造してみました。このURLから前回の作品が見られます。
https://niwakomablog.com/python-workbook/

 どんな改造をしたかというと問題をランダムに出題できるようにしました。

 それでは本編どうぞ!

 何かご指摘があればご連絡ください!

スポンサードサーチ


問題集を改造した

・前回の問題集が物足りなくて改造したい人
・pythonの基礎を勉強し終わって何を作ればよいかわからない人
・pythonではどんなものが作れるのか興味がある人

という方に向けて書いていきたいと思います。

 前回が四則演算の問題集を作りました。足し算、引き算、掛け算、割り算のどれか1つのパターンだけが生成されるプログラムを書きました。

 しかし今回は、四則演算がごちゃまぜで、ランダムで生成されるプログラムを書いてみました。

 プログラムを書く上で以下のような点に気を付けました。

・小学生レベルの問題の設定であるので、引き算において答えがマイナスになること
・割り算において0で割ることは出来ないこと

 この二点において条件式を書き加えれば完成です。とても簡単に改造することができました。

実際のコードを以下に張り付けておきます。

# 問題を生成するpythonのプログラム

import random

html = """
        <!DOCTYPE html>
        <html lang="ja" dir="ltr">
          <head>
            <meta charset="utf-8">
            <title>足し算用</title>
            <link rel="stylesheet" href="style.css" media="screen">
            <link rel="stylesheet" href="print.css" media="print">

          </head>
          <body>
            <div class="main-body">
              <article class="add-calculation">
                <section>
                  {0}
                </section>
                <section>
                  {1}
                </section>
              </article>

              <article class="add-calculation">
                <section>
                  {2}
                </section>
                <section>
                  {3}
                </section>
              </article>

              <article class="add-calculation">
                <section>
                  {4}
                </section>
                <section>
                  {5}
                </section>
              </article>

              <article class="add-calculation">
                <section>
                  {6}
                </section>
                <section>
                  {7}
                </section>
              </article>

              <article class="add-calculation">
                <section>
                  {8}
                </section>
                <section>
                  {9}
                </section>
              </article>


            </div>
          </body>
        </html>
        """

number_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
formula0 = formula1 = formula2 = formula3 = formula4 = formula5 = formula6 = formula7 = formula8 = formula9 = ""
formula_list = [formula0, formula1, formula2, formula3, formula4,
                formula5, formula6, formula7, formula8, formula9,]

four_basic = ["{0} + {1} = ", "{0} × {1} = ", "{0} ÷ {1} = ", "{0} - {1} = "]

for i in range(len(number_list)):
    r = random.randint(0, 9)
    four_r = random.randint(0, 3)
    str = four_basic[four_r].format(i + r, number_list[r])
    # 割り算のとき「?÷0」は出来ないので
    # その回避用
    if( four_basic[four_r] == "{0} ÷ {1} = " and number_list[r] == 0 ):
        str = four_basic[four_r].format(number_list[r], i + r)
    # 小学生レベルの問題では答えがマイナスになる問題は出題されないので
    # その回避用
    if( four_basic[four_r] == "{0} - {1} = " and ((i + r) <= number_list[r]) ):
        str = four_basic[four_r].format(number_list[r], i + r)
    formula_list[i] = str

html_w = html.format(formula_list[0], formula_list[1], formula_list[2], formula_list[3], formula_list[4], formula_list[5], formula_list[6], formula_list[7], formula_list[8], formula_list[9])

path = "workbook-random.html"

with open(path, mode="w", encoding="utf-8") as f:
    f.write(html_w)

使いかたに関しては問題集作ってみた!!!に書いてあります。

まとめ

 前回のプログラムが物足りなかった人にとっては今回のプログラムも簡単だったかもしれません。

 しかし、何か完成しているものを改造するのは新しくプログラムを書くよりも簡単なので、いろんな改造が出来ると思います。改造したらぜひ見せてください。twitterのDMまでお願いします。

 また、pythonの基礎学習が終了している方は何か新しくプログラムを書くことをおすすめします。実践が一番勉強になります。

 新しくプログラムを書いたらアップしていきたいと思いますのでよろしくお願いします。

最後まで読んでいただきありがとうございます。


スポンサードサーチ