リンク内容
上の方の動画を参考にして英単語テストを作ろうとしています。
python(windows)を利用して、50問ずつの単語テスト50回分を作ろうとしているのですが、実行結果が以下のようになってしまいます。実現したい結果は、①選択肢を4つ表示させること。②正解を一つ含んだ選択肢にすることです。
しかし、実際の以下の実行結果の場合、選択肢が4つそろわない、正解が含まれていないということになっています。
どうすればよいでしょうか。
出席番号:
名前:
第1回 英単語テスト
問い1. invent
- …を作り出す,…を創造する
- …かなと思う/驚き
- …について述べる,…を描写する
問い2. tend
- …を想定する,…とみなす
- …に聞こえる/音
- …をうち負かす
問い3. beat
- 同意する,賛成する
- …を叩く,
- …を改善する
問い4. advise
- …を調節する,順応する
- …を分かち合う
問い5. belong
- …であるようだ
- …する傾向がある
- steal
問い6. remember
- 勝つ,…を勝ち取る
- …を避ける
途中省略
~~問い50まで 前50回分
python
1コード 2import re 3import random 4 5source = 'englishword.txt' 6 7with open(source ,encoding="utf-8") as f: 8 data = f.read() 9 10english_words = re.findall('[a-z]+', data) 11ja = re.findall('\s.*\n', data) 12 13meanings = [] 14for word in ja: 15 m = re.sub('\t|\n', '', word) 16 meanings.append(m) 17 18words_dict = dict(zip(english_words, meanings)) 19 20 21n_tests = 50 22n_questions = 50 23 24for test_num in range(n_tests): 25 with open('英単語テスト_{:02d}.txt'.format(test_num + 1), 'w', encoding='utf-8')as f: 26 27 f.write('出席番号:\n' 28 '名前:\n\n' 29 '第{}回 英単語テスト\n\n'.format(test_num + 1)) 30 31 32 for question_num in range(n_questions): 33 question_word = random.choice(english_words) 34 correct_answer = words_dict[question_word] 35 36 meanings_copy = meanings.copy() 37 meanings_copy.remove(correct_answer) 38 wrong_answers = random.sample(meanings_copy, 3) 39 40 answer_options = [correct_answer] + wrong_answers 41 42 random.shuffle(answer_options) 43 44 f.write('問い{}. {}\n\n'.format(question_num + 1, question_word)) 45 46 for i in range(4): 47 f.write('{}. {}\n'.format(i + 1, answer_options[i])) 48 f.write('\n\n')
回答2件
あなたの回答
tips
プレビュー