LoginSignup
2
3

More than 3 years have passed since last update.

計算ドリル python

Last updated at Posted at 2019-11-15

今回はテキストファイルを利用して、一桁自然数の二項演算の計算ドリルを作っていきます。環境はanaconda。書いたコードは以下の通りです。

コードと出力結果

計算ドリル
import random

with open("keisan.txt","w") as f:
    answer = []
    for cnt in range(10):
        num1 = random.randint(1,9)
        num2 = random.randint(1,9)
        question = str(num1) + " + " + str(num2) + " = "
        answer.append(num1+num2)
        f.write(question+"\n")
    f.write("\nA. ")
    for ans in answer:
        f.write(str(ans) + " ")
出力結果
5 + 1 = 
5 + 2 = 
3 + 3 = 
2 + 6 = 
1 + 5 = 
4 + 8 = 
6 + 1 = 
8 + 4 = 
6 + 7 = 
6 + 4 = 

A. 6 7 6 8 6 12 7 12 13 10 

フロー

プログラムのフローを説明してきます。

テキストファイルのオープン
with open("keisan.txt","w") as f:

まず、最初に一桁の自然数を取得するためにrandomモジュールをインポートします。そして、テキストファイルに出力するためにwithステートメントを使い、ファイル名を"keisan.txt"として、書き込みモードにして開きます。

式の書き込み
answer = []
for cnt in range(10):
        num1 = random.randint(1,9)
        num2 = random.randint(1,9)
        question = str(num1) + " + " + str(num2) + " = "
        answer.append(num1+num2)
        f.write(question+"\n")
    f.write("\nA. ")

ここでは実際の足し算を書き込んでいます。答えの出力もするので、リストを用意します。randomモジュールの整数を生成するrandint関数を使い、1~9の自然数を生成しています。questionには問題文を格納するのですが、演算子を使うと勝手に計算されてしまいますので文字列に変換して格納しています。答えの方はappendメソッドを使い、リストに加えていきます。そして、questionに格納された計算式をwriteメソッドで書き込んでいます。見やすいように改行しつつ出力します。

答えの書き込み
 for ans in answer:
        f.write(str(ans) + " ")

最後に、answerに格納された答えのリストをfor文で順番に出力していきます。

振り返り

過去にC言語を使った、テキストファイルの書き読み込みをしたことがありますが、pythonだとwith文を使うことでファイルのクローズを意識しなくなるのでとても楽ですね。
このコードは足し算の二項演算だけなので、今後はもっとこの計算ドリルを演算を自由に選べたり桁数を指定したりと機能を拡張していきたいと思います。なにかご意見、質問などありましたら気軽にコメントして下さい。

2
3
6

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
3