import re import random source = "english_words_01.txt" with open(source) as f: data = f.read() english_words = re.findall("[a-z]+", data) ja = re.findall("\s.*\n", data) meanings = [] for word in ja: #\tと\nを無に置き換えてwordに渡す m = re.sub("\t|\n|…", "", word) meanings.append(m) #辞書型に変換dict #合わせるzip words_dict = dict(zip(english_words, meanings)) n_tests = 50 n_questions = 50 for test_num in range(n_tests): with open("英単語テスト_{:02d}.txt".format(test_num + 1), "w") as f: f.write("出席番号: \n" "名前: \n\n" "第{}回 英単語テスト\n\n".format(test_num + 1)) for question_num in range(n_questions): question_word = random.choice(english_words) correct_answer = words_dict[question_word] meanings_copy = meanings.copy() meanings_copy.remove(correct_answer) wrong_answers = random.sample(meanings_copy, 3) answer_options = [correct_answer] + wrong_answers random.shuffle(answer_options) f.write("問{}. {}\n\n".format(question_num + 1, question_word)) for i in range(4): f.write("{}. {}\n".format(i + 1, answer_options[i])) f.write("\n\n")