pythonで百ます計算のプリント作った話


家庭教師のアルバイトで使う百ます計算 1 のプリントを、PythonのPandas使ってlatexソースとして吐き出させようと考えた。

成果物

ソース

source.py
#Python 3.7.2
#pandas 0.24.2
import random
import pandas as pd
#プリアンブル
priamble=r"""
\documentclass[dvipdfmx,autodetect-engine,12pt]{jsarticle}
\usepackage{extsizes}
\begin{document}

\begin{center}

\large{百ます計算}\\
"""
print(priamble)
#吐き出したいページ数を指定
pages=10
num=pages*2-1
for x in range(num+1):
    #行(1~9)確保
    index1 = list(range(1,10))
    #シャッフル
    random.shuffle(index1)
    #列(1~9)確保
    columns1 = list(range(1,10))
    #シャッフル
    random.shuffle(columns1)
    df=pd.DataFrame(index=index1,columns=columns1)
    #DataFrame形式のtableのNaN値をスペース埋め
    df1=df.fillna(" ")
    #tableの罫線追加&jsarticle環境での諸々を置換
    print(df1.to_latex(column_format="|l||l|l|l|l|l|l|l|l|l|").replace(r"\bottomrule","")\
.replace(r"\toprule",r"\hline").replace(r"\\",r"\\\hline").replace(r"\midrule",r"\hline"))
    #一番最後の表を除き、下部の表のタイトルを出力
    if(x!=num):
        mid=r"""

\vspace{\baselineskip}
\vspace{\baselineskip}
\vspace{\baselineskip}
\large{百ます計算}\\
"""
        print(mid)
ending=r"""
\end{center}
\end{document}
"""
print(ending)

感想

もうすこし表を大きくしたかったです(geometryパッケージを使って余白調整もしてみましたがうまく行かないです、アドバイスお待ちしております。)。

フォントがきれいじゃないから埋め込んだほうがいいのかも…

ちょっとした思いつきとPythonの練習も兼ねてやってみたが、実際に困ったのはTeXの見栄えをいかに良くするかだった。

TeXツライ。

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

)を用いました。


  1. 正確には81マスですが一般的名称(百ます計算 - Wikipedia https://ja.wikipedia.org/wiki/%E7%99%BE%E3%81%BE%E3%81%99%E8%A8%88%E7%AE%97