ぽっけの技術ブログ

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

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

前回の略語暗記カード(略語の暗記カードアプリを作成しました - ぽっけの技術ブログ)を応用し、英単語暗記カードのようなコンソールアプリケーションを作成しました。

TOEIC勉強などに利用できます。

ダウンロード

github.com

使い方

flashcardsForEnglish.pyを実行すると同階層のeng.csvを読み込み、ランダムで英単語を出題します。
Enterで答えが表示されます。
自分が思ったのが合っていたら]Enter
わからなかった、または間違っていたらそのままEnterを押します。
一周するまでわからなかった問題がランダムで出題されます。
また完全に覚えた単語は:Enterすると、次の周回や起動時も二度と出題されなくなります。

<サンプル2>

単語帳ファイルについて

単語帳ファイルeng.cvs(UTF-8、BOM付き)は、[英単語],[日本語訳],[出題フラグ]の形式のCSVファイルです。
サンプルとしてTOEIC~約800点相当の英単語・イディオムを約1400語入れていますが、編集・追記が可能です。
出題フラグが1のもののみが出題され、完全に覚えた単語は出題フラグが0に変わります。

ソースコード

import csv
import random

if __name__ == '__main__':
    while True:
        with open('eng.csv', encoding='UTF-8_sig') as f:
            reader = csv.reader(f)
            l = []
            write = []
            left = 0
            for row in reader:
                if len(row) != 0:
                    l.append(row)
                    write.append(row)
                    if row[2] == '1':
                        left += 1
            
            print('全 ' + str(left) + ' 問')
            print('"]":わかった! ":":覚えた!')
        while True:
            i = random.randint(0, len(l) - 1)
            if l[i][2] != '1':
                continue

            print(l[i][0])
            input()
            print(l[i][1])

            command = input()
            if command.lower() == ']':
                print('  ( -`ω-)✧ わかった!')
                del l[i]
                left -= 1
                print('------------------------残り ' + str(left) + " 問")
            elif command.lower() == ':':
                print('゚+。:.゚ヾ(≧∇≦*)/ 覚えた!.:。+゚')
                left -= 1
                print('------------------------残り ' + str(left) + " 問")

                for row in write:
                    if row[0] == l[i][0]:
                        row[2] = '0'
                        l[i][2] = '0'
                        break
                with open('eng.csv', 'w', encoding='UTF-8_sig', newline='') as f:
                    writer = csv.writer(f)
                    writer.writerows(write)
            else:
                print('◆◆◆◆◆◆◆◆ (・_・)わからん……◆◆◆◆◆◆◆◆')
                print('------------------------')

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

所感

今回もシンプルな実装とシンプルな機能を目指して作りました。
前回の略語暗記カードを少し改造して英単語暗記カードを作ろうとしましたが、正確に日本語訳を入力しなければならないのは使っていて面倒なので、このような脳内判定形式にしました。
また単語数が1400語以上と膨大になったので、完全に覚えた単語は二度と出題しない機能を付けました。