0

私はPythonでゲームを書いています。このゲームでは、単語のリストからランダムな単語を定期的に取得する必要があります。word_list = ['cat','dog','rat','house']ゲームのプロトタイプを作成したとき、モジュールの1つの上部に10語を宣言しました。次にchoice(word_list)、ランダムな単語を取得するために使用します。ただし、単語リストのサイズを5,000語以上に増やす必要があるため、この一時的なハックをよりエレガントなものに変更する必要があります。現在のモジュールでこれを行うと、ばかげているように見えます。

これらの単語をすべてフラットなtxtファイルに入れて、単語が必要になったときにそのファイルから読み取る必要がありますか?もしそうなら、私はそれをどのように行うのが最善でしょうか?各単語を別々の行に入れてから、ランダムな1行を読みますか?最も効率的な方法がわかりません。

4

4 に答える 4

4

すべての単語をフラットテキストファイルに1行に1つずつ入れます。

cat
dog
....

次のワンライナーを使用して、必要なときにいつでもロードできます。

word_list = [word.rstrip() for word in open("words.txt","r")]

参照:http ://docs.python.org/tutorial/datastructures.html#list-comprehensions

このソリューションは、組み込み関数以外に依存しないため、少し洗練されています。モジュールをインポートする必要はありません。

ロードしたら必ずキャッシュしてください。ただし、新しい単語が必要になるたびにファイルから単語をロードする必要はありません。

于 2012-06-24T22:44:33.963 に答える
3

起動時にファイル(または少なくとも行インデックス)から単語を読み取り、必要に応じて使用します。

于 2012-06-24T21:08:38.993 に答える
2

random_wordsなどと呼ばれる別のモジュールを作成し、その中にリストを非表示にしchoice(word_list)て、インターフェイス関数の内部をカプセル化します。

ファイルからロードする場合は、とにかく入力する必要があり、Pythonファイルは最終的には単なるテキストファイルなので、メンテナンスを容易にするために、おそらく1行に1つずつ入力します。

于 2012-06-24T21:13:04.950 に答える
0

各単語をテキストファイルの別々の行に保存し、readercsvモジュールから)使用して起動時にファイルをリストにロードすることができます。次に、リストからランダムに単語を選択できます。

import csv

FILENAME = 'word_list.txt'
word_list = []

# Open word list and get words
with open(FILENAME, 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        word_list.append(row)

5000語でも、50キロバイトのRAMを超えてはいけないので、これを効率的に行う方法だと思います。

于 2012-06-24T21:17:05.640 に答える