LoginSignup
2
2

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-07-27

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

成果物

pdf_page-0001.jpg

ソース

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

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2