こんにちは!
検索・保存編の記事では、英単語の意味をスクレイピングによって取得し保存するプログラムを作成しました。
こんにちは! 皆さんは英語の勉強をしていますか? 僕は、海外のドラマを英語字幕で見ることで、英語の勉強をすることがよくあります。しかし海外のドラマを見ていると、わからない単語がいっぱい出てきます。 Python初心者 海外ド[…]
今回は、保存した英単語をランダムに出題するプログラムを作成したので紹介します。
現段階での大まかな仕様
現段階での大まかな仕様を紹介します。
- 保存してある単語をランダムに1つ表示する
- 意味を表示する前に確認する
- 意味を表示する
- 出題を繰り返す
それぞれの仕様について説明していきます。
保存してある単語をランダムに1つ表示する
検索・保存編で作成したプログラムによってcsvファイルに保存した単語の中からランダムに1つの単語を選んで表示します。
単語とその意味は、以下のようにcsv形式で保存されています。
csvファイルの読み込み方法は以下の記事を参考にしてください。
こんにちは! 皆さんはCSVファイルからデータを読み込んだり、 CSVファイルへデータを書き込みたいと思ったことはありますか? CSVファイルはエクセルなどでも開くことができたり、よく使われているデータ形式なので、プログラミン[…]
意味を表示する前に確認する
前項でランダムに単語を1つ表示します。しかし、単語と同時に意味を表示してしまっては、単語の意味を考える時間がないため、単語の意味が身につきません。
そこで考える時間を作るために、意味を表示する前に確認を行います。
意味を表示する
意味の表示の確認が取れたら、意味を表示します。そのままなので、特に述べることはありません。
出題を繰り返す
多くの単語を勉強しようとするときに、いちいち1単語ずつプログラムを実行し直していては面倒です。
そのため、意味を表示した後に、出題を繰り返すかどうか確認して、繰り返す場合には、新しい単語をランダムに1つ表示し、それ以外の場合はプログラムを終了します。
作成した英単語帳内の単語を出題するプログラム
以下のプログラムは、前項で紹介した仕様に沿った英単語帳内の単語を出題するプログラムです。
import csv
import random
#単語と意味が保存されているcsvファイル
list = 'list.csv'
list_data = []
#csvファイルの読み込み
with open(list, 'r') as f:
reader = csv.reader(f)
for row in reader:
list_data.append(row)
#出題を繰り返すためのフラグ
conti = "y"
#conti=yの間出題を繰り返す
while(conti == "y"):
#ランダムにリスト内のインデックスを取得
list_num = random.randint(0, len(list_data)-1)
#単語を表示
print(list_data[list_num][0])
#意味を表示するかの確認
check_or_not = input("check mean? y/n:")
if check_or_not == "y":
print(list_data[list_num][1])
#出題を繰り返すかの確認
conti = input("continue? y/n:")
実行結果
wrinkle
check mean? y/n:y
(皮膚・布などの小さな)しわ、小じわ、新趣向、新機軸、よい考え、妙案
continue? y/n:y
sneak
check mean? y/n:y
こそこそと入る、うろうろする、(…に)こっそり近づく、こっそり逃れる、教師に告げ口する
continue? y/n:y
hook
check mean? y/n:y
(引っかけるため先の曲がった)鉤(かぎ)、留め金、ホック、掛けかぎ、自在かぎ、(公衆電話の受話器をかける)手(の部分)、(魚釣り用の)かぎ針、わな、かぎ形の刈り取りがま、(引用符の)かぎ
continue? y/n:n
仕様したモジュールは、csvファイルを読み込むための「csv」、ランダムに英単語を出題するための「random」の2つです。
今後の予定
この出題プログラムもPart1で作成した英単語帳プログラムと同様に改良を重ねていきたいと思います。
改良する点は、
・出題回数を記録
→出題回数の偏りをなくすため
・正解したか間違ったかを記録
→間違った英単語を優先的に出題
などを考えています。こちらも改良次第記事にしたいと思います。
まとめ
今回の記事では、Python初心者の僕が作成した英単語帳に保存されている単語の出題プログラムを作成しました。
まだまだ改良する点や、プログラムを見直した方がいい点など改善点が多くあると思いますが、自分で何かを作ってみるということは非常に楽しいし達成感がありますね!
皆さんも是非自分で何か作成してみてはどうでしょうか?
改善すべき点などをお教えいただける方がいましたら、コメントやTwitterのDMで教えていただけたら嬉しいです!