Spaces:
Sleeping
Sleeping
| import random | |
| from vocab import get_words_from_source | |
| from sentences import get_sentence | |
| # 生成單字選擇題 | |
| def generate_fill_in_blank_exam(source, num): | |
| words_data = get_words_from_source(source) | |
| words = random.sample(words_data, num) | |
| questions = [] | |
| for word_data in words: | |
| word = word_data['word'] | |
| phonetic = word_data['phonetic'] | |
| # 取得例句 | |
| sentence_data = get_sentence(word) | |
| if not sentence_data: | |
| continue # 沒例句的跳過 | |
| sentence = sentence_data[2] | |
| blank_sentence = sentence.replace(word, '______') | |
| # 生成干擾選項 (亂數抽 3 個其他單字) | |
| other_words = [w['word'] for w in words_data if w['word'] != word] | |
| distractors = random.sample(other_words, 3) | |
| options = [word] + distractors | |
| random.shuffle(options) | |
| questions.append({ | |
| "sentence": blank_sentence, | |
| "options": options, | |
| "answer": word, | |
| "phonetic": phonetic | |
| }) | |
| return questions | |
| # 自動對答案並計分 | |
| def check_exam(user_answers, questions): | |
| correct_count = 0 | |
| results = [] | |
| for i, user_answer in enumerate(user_answers): | |
| correct_answer = questions[i]['answer'] | |
| is_correct = (user_answer == correct_answer) | |
| results.append({ | |
| "question": questions[i]['sentence'], | |
| "user_answer": user_answer, | |
| "correct_answer": correct_answer, | |
| "is_correct": is_correct | |
| }) | |
| if is_correct: | |
| correct_count += 1 | |
| score = f"{correct_count}/{len(questions)} 分" | |
| return score, results | |