iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0

▍程式碼

# 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>

題目、選項順序皆為隨機,重新整理頁面可以刷新題目。
https://ithelp.ithome.com.tw/upload/images/20250928/201693702RZmMc6epg.png
https://ithelp.ithome.com.tw/upload/images/20250928/20169370n8dk75x5wF.png
https://ithelp.ithome.com.tw/upload/images/20250928/20169370OzQOjFMmeP.png


上一篇
DAY13 - 編輯視窗
系列文
打造你的數位圖書館:從雜亂檔案到個人化知識庫14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言