Pythonで単語帳作ってみた Part2

 はじめまして、にわこまです。単語帳作ってみた(tanngochou.py)で出てきた改良出来る点を作り直してみました。

1つ目はランダムに問題を選出する方法(tanngochou2.py)

2つ目は、CSVファイルから単語を読み込む方法です。(tanngochou3.py)

 文章表現や内容に不備があるかもしれませんが、最後まで読んでいただけるとありがたいです。

スポンサードサーチ


ランダムに問題を出題

 はじめに、ランダムに問題を選出する方法を考えていきたいと思います。

 選出方法をランダムにするということは、順番に選出されないということと解いた問題が出題されないようにしなければいけません。

よって、プラスする機能はつぎのように考えました。

1.ランダムに出題する
2. 解き終わっている問題を出題しないようにする。

では、どのように実装するかです。

1.に関してはpythonのrandomをインポートして解決します。
2.に関しては解き終わった問題をリストから削除することにより解決します。

 実際にコードを見ていきましょう。(tanngochou2.py)tanngochou.pyに書き加えた行をハイライトします。

import random

eng = ["python", "javascript", "swift", "java", "PHP"]
ja = ["パイソン", "ジャバスクリプト", "スイフト", "ジャバ", "ピーエイチピー"]

print("分からない場合は「not」と打ち込んでください")
count = 0
list_len = len(eng)
while(count < list_len):
    num = random.randrange(len(eng))
    word_ja = ja[num]
    word_eng = eng[num]
    print(word_ja)

    ans = input()

    if(ans == word_eng):
        print("正解")
        eng.remove(word_eng)
        ja.remove(word_ja)
        count = count + 1
    elif(ans != word_eng):
        if(ans == "not"):
            print("次の問題に移ります。")
            count = count + 1
        else:
            print("不正解")
            print("正解は" + word_eng)
    else:
        print("強制終了します。")
        break
    #見やすくするための一行空欄
    print("")

print("単語帳を終了します。")

 ランダムに出題するために書き加えた行は4行くらいです。簡単な改良でありますが、この程度であれば簡単に改良できます。

CSVファイルから

次に、CSVファイルから単語と日本語訳を読み込む方法を考えていきます。

 CSVファイルから読み込むことが出来ると、いちいちpythonのlistに書き込まなくてよくなります。つまり、作業が楽になります。

プラスする機能はつぎのようになると考えました。

1.CSVファイルから読み込む
2.CSVファイルから読み込んだ単語と日本語訳をリストに追加する。

では、どのように実装するのか

1.に関してはcodecsをインポートして解決します。
2.に関しては、一度読み込んだデータを一つにして単語と日本語訳に分かれるようにリストに追加して解決します 。

実際にコードを見ていきましょう。(tanngochou3.py)tanngochou2.pyに書き加えた行はハイライトします。

import codecs
import random

#Shift_JISのファイルを読み込む
filename = "tanngochou.csv"
csv = codecs.open(filename, "r", "utf-8-sig").read()

# csv -> python list
data = []
rows = csv.split("\r\n")
for row in rows:
    if row == "": continue
    cells = row.split(",")
    data.append(cells)

# リストに追加
eng = []
ja = []
for i in data:
    eng.append(i[0])
    ja.append(i[1])

# 単語帳のメイン
print("分からない場合は「not」と打ち込んでください")
count = 0
list_len = len(eng)
while(count < list_len):
    num = random.randrange(len(eng))
    word_ja = ja[num]
    word_eng = eng[num]
    print(word_ja)

    ans = input()

    if(ans == word_eng):
        print("正解")
        eng.remove(word_eng)
        ja.remove(word_ja)
        count = count + 1
    elif(ans != word_eng):
        if(ans == "not"):
            print("次の問題に移ります。")
            count = count + 1
        else:
            print("不正解")
            print("正解は" + word_eng)
    else:
        print("強制終了します。")
        break
    #見やすくするための一行空欄
    print("")

print("単語帳を終了します。")

 意外と簡単な改良でした。これをウェブサイトや自分のスマートフォンや携帯で実装出来たらアプリなんかもつくることができるかもしれません。

スポンサードサーチ


まとめ

 pythonで単語帳を作るだけでいろんな、発展をすることができました。

 pythonの基礎までを勉強し終わっている方は、何かを作ってみるととても勉強になると思います。

今回作ってみましたが、さらに追加してみたい機能が出てきました。

 たとえば、正解数が少ないものを重点的に出題するようにしてみるとか、大文字と小文字を識別しないようにしてみる。

 さらに言えば、ゲーム風に作り変えてみるとか。

 1つ作って、発展させる間にいろんなアイデアが出てきます。まずは、なんでもいいから自分の好きなものを作ってみましょう。

そうすることで、初心者から脱出できます。

実践が最効率の勉強法です。

 ゲームを作ってみたいという方には、「ゲームを作りながら楽しく学べるPythonプログラミング」をおすすめです。

pygameというモジュールを使って作っています。テトリスやシューティングゲームが作れるので楽しいし、勉強になると思います。


スポンサードサーチ