久々の投稿です。
2022年も始まり、今年は寅年。いい年にしていきたいです。
今回はテスト時期でもあるので、テスト前に頭の体操のできる簡単な計算問題を作成するPythonデータを作成しました。
で、計算問題ってPython使ってない人も作りたいと思うので、exeファイル化もやってみました。
まずは、計算問題の作成。今回は、二桁の掛け算を10問作るコードにしました。
作成する問題文は下図のとおり。

計算問題は、docxファイルで作成されます。なので、ちょっとした修正などもできます。
(計算問題作成のホームページは多数ありますが、ホームページ印刷か、pdf化が一般的だと思うので、ほんとちょっと差別化してみた。触れたからなんだって感じだけど。)
作成するコードは下記のとおり。
#ttest.py
import docx
from docx.shared import Mm
import random
doc = docx.Document()
pg=[]
ab=[]
cd=[]
ans=[]
# a*10+b "*" c*10+d = (a*10+b)*(c*10+d)
for i in range(10):
a = random.randint(0,9)
b = random.randint(0,9)
c = random.randint(0,9)
d = random.randint(0,9)
ab.append(a*10+b)
cd.append(c*10+d)
ans.append(((a*10)+b)*((c*10)+d))
pg.append("")
doc.add_paragraph("計算問題",style="Title")
for i in range(10):
pg[i] = doc.add_paragraph()
pg[i].paragraph_format.space_after = docx.shared.Pt(30)
pg[i].paragraph_format.left_indent = Mm(10)
pg[i].add_run(f"{i+1} ) {ab[i]} ✕ {cd[i]} = {ans[i]}")
pg[i].runs[0].font.size=docx.shared.Pt(20)
# pg[i].runs[0].space_after = docx.shared.Pt(30)
#print(len(doc.paragraphs))
doc.save("計算問題10問_掛け算.docx")
importしたモジュールは、docx,randomの2つのみ。超シンプル。
doc = docx.Document() でdocxファイルを作成。
doc.saveでdocxファイルを保存する。保存先は、ファイルデータと同一ディレクトリ。
今回は、計算問題10問_掛け算.docxで保存される。
ab,cd,ansのリスト(空のリスト)を作成して、ランダムに設定される数字をリストに入れていく(append)。
pgのリストは、作成されたdocファイルの段落を管理するために作成される。add_paragraph(段落追加)やparagraph_format.space_after(段落間のスペース)等はdocxのホームページ参照。基本、_formatで設定変更できるみたい。runは言葉・文?の塊を作成する。
構成は、paragraph + run[0] + run[1] + ・・・になるみたい。
計算問題を作ってくれるホームページみたいにするには、tkinterを組み合わせればできるけど、今回はexeをクリックで、計算問題のdocxができるのみにします!
これをいつもみたいに、「python ttest.py」で実行すればOK。
これだと、pythonが入っている人しか使えない。。。。
一般的に使うには、これでは困るので、exe化をする。
ネットを探していると、すぐに見つかりますので、pyinstallerを使用します。
pyinstaller はインストールが必要。[pip install pyinstaller]でOK。
exe化
コマンドプロンプトで、下記を実行。
「pyinstaller ttest.py –onefile」
これだけ。すると、ttest.pyがあるディレクトリに下記のファイルができる。
ttest.specファイル、distディレクトリ、buildディレクトリが作成される。
exeファイルはdistディレクトリに保存されている。
作成されたexeファイルは、ここからzip ダウンロード可能?
単純な計算を何個も作るって密かに面倒だと思うので、いいかも。使い方ではドリルっていらないなって思いますね。本当はランダムで割り算、足し算、引き算も入れたかったんですけどね。また今度にします。
使う人いるのかな。。。。。