# views.py
import random
@app.route('/quiz')
def quiz():
# 設定要抽取的題目數量,醫學資訊管理師證照檢定考試固定是50題
QUIZ_SIZE = 50
# 如果題庫不夠50題,抽取所有題目
if len(KNOWLEDGE_BASE) < QUIZ_SIZE:
random_questions = KNOWLEDGE_BASE
print(f"題庫數量不足 {QUIZ_SIZE} 題,共抽取 {len(KNOWLEDGE_BASE)} 題。")
else:
# 使用 random.sample() 從 KNOWLEDGE_BASE 中隨機抽取 50 題
random_questions = random.sample(KNOWLEDGE_BASE, QUIZ_SIZE)
print(f"成功隨機抽取 {QUIZ_SIZE} 題。")
# 打亂選項順序
for q in random_questions:
if '選項' in q and isinstance(q['選項'], list):
random.shuffle(q['選項'])
return render_template(
'quiz.html',
title='模擬醫學資訊管理師證照檢定考試',
year=datetime.now().year,
quiz_data=random_questions # 將隨機抽取的題目列表傳遞給模板
)
<!-- quiz.html -->
<div>
<h1>{{ title }}</h1>
<!-- 測驗表單 -->
<form id="quiz-form">
{% for question in quiz_data %}
<!-- 設定一個變數來存目前題目索引 -->
{% set q_index = loop.index %}
<div>
<div class="card-header">
<h5>第 {{ q_index }} 題</h5>
</div>
<div class="card-body">
<!-- 顯示題目 -->
<p class="card-text">{{ question.題目 }}</p>
<!-- 顯示選項 -->
{% for option in question.選項 %}
<div class="form-check">
<input class="form-check-input" type="radio"
name="question-{{ q_index }}"
id="q{{ q_index }}-o{{ loop.index }}"
value="{{ option }}">
<label class="form-check-label" for="q{{ q_index }}-o{{ loop.index }}">
{{ option }}
</label>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
<div>
<button type="submit" class="btn btn-success btn-lg">送出測驗</button>
</div>
</form>
</div>
題目、選項順序皆為隨機,重新整理頁面可以刷新題目。