ぽっけの技術ブログ

仕事や趣味で日々学んだことを出力していきます。

略語の暗記カードアプリを作成しました

英語の略語を覚えるための暗記カードのようなコンソールアプリケーションをPythonで作成したので公開します。
ポンポンと問題を解いていけるシンプルなPC用アプリです。
資格勉強なんかに役立ちます。

ダウンロード

github.com

目的

基本情報技術者試験応用情報技術者試験の過去問を解いていると、以下のような問題に出くわします。

WPA3はどれか。
ア. HTTP通信の暗号化規格
イ. TCP/IP通信の暗号化規格
ウ. Webサーバで使用するディジタル証明書の規格
エ. 無線LANのセキュリティ規格
応用情報技術者試験ドットコム 基本情報技術者令和元年秋期 午前問37より

この問題、WPA3が Wi-Fi Protected Access 3 の略であることを知っていれば、それだけで答えが エ. 無線LANのセキュリティ規格 であることがわかります。
このように略語さえ知っていれば答えがわかる問題が結構多かったので、略語を覚えるためのシンプルな暗記カードアプリをPythonで作ってみました。
もちろん単語帳を編集すれば他の勉強にも役立ちます。

使い方

flashcardsForAbbr.pyを実行すると同階層のabbr.csvにある略語がランダムで出題されるので、その略語の省略しない形を答えてEnterを押すと判定されます。
正解ならもうその略語は出題されませんが、不正解ならまた出題されます。
(大文字、小文字は区別されません。)

全て正解するとまた最初からランダムで出題され始めます。このとき単語帳を読み込みなおします。

また回答する代わりに以下のコマンドを入力できます。

コマンド 効果
restart, reset 最初からランダム出題(単語帳を読み込みなおします)
end, finish, quit, exit 終了(普通に×で閉じるのと同じ)

単語帳abbr.csvにはとりあえず私が応用情報技術者試験の勉強に使った単語を入れていますが、好きに変えて使ってください。
形式は[略語],[省略しない形],[解説]です。
文字コードUTF-8なのでExcelだと文字化けします。私はサクラエディタで編集しました。)

ソースコード

flashcardsForAbbr.py

import csv
import numpy

if __name__ == '__main__':
    while True:
        with open('abbr.csv', encoding='UTF-8') as f:
            reader = csv.reader(f)
            l = []
            for row in reader:
                if len(row) != 0:
                    l.append(row)
        while True:
            i = numpy.random.randint(0, len(l))
            print(l[i][0].strip())
            answer = input()
            if answer.lower().strip() == 'restart' or answer.lower().strip() == 'reset':
                break
            if answer.lower().strip() == 'end' or answer.lower().strip() == 'finish' or answer.lower().strip() == 'quit' or answer.lower().strip() == 'exit':
                exit()
            if answer.lower().strip() == l[i][1].lower().strip():
                print('  ヾ(*´∀`*)ノ 正解!')
                print(l[i][0].strip() + ' : ' +l[i][1].strip())
                print(l[i][2].strip())
                print('')
                del l[i]
            else:
                print('◆◆◆◆◆◆◆◆ (・_・)不正解……◆◆◆◆◆◆◆◆')
                print(l[i][0].strip() + ' : ' +l[i][1].strip())
                print(l[i][2].strip())
                print('')

            if len(l) == 0:
                print('  旦_(-ω- ,,)一周しました。')
                print('')
                break

所感

Pythonの勉強も兼ねて作りました。インデントでブロックを作るので見やすいし短く書けてよかったです。
シンプルなコンソールアプリケーションを目指して作りましたが、絵的に寂しくなったので結局顔文字を入れることになりました。
応用情報技術者試験の勉強に実際に使っていますが割と役に立っています。
サンプルのabbr.csvの用語解説が間違ってたらすみません。適当に修正して使ってください。