You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python按难度等级分配测验随机题目 代码输出异常求解

现有代码问题点
  • 抽题数量逻辑完全错误:计算得到的mod_q = quiz_questions//3在题量为7时结果为2,仅用来读取每个难度列表中索引为2的单个元素,既没有凑够测验要求的总题量,也完全不符合给定的难度配比规则。
  • 未实现随机抽题要求:原代码固定读取列表固定位置的元素,没有做随机选取,每次运行结果完全固定,达不到随机展示题目的需求。
  • 缺失规则分支判断:代码没有区分7道题、8道题两种场景的不同难度配比,无论传入哪个总题量,执行逻辑都完全一致。
  • 未生成完整题集:原代码仅单独取了三个孤立的元素,没有拼接成完整的测验题目列表,无法直接提供给终端用户使用。
正确实现方案

实现思路:

  • 首先根据传入的测验总题量,匹配对应难度需要抽取的题目数量
  • 使用Python标准库random的无重复抽样方法,从各难度题库中随机抽取对应数量的题目
  • 可选将抽完的题目整体打乱顺序,避免同一难度的题目扎堆展示

完整可运行代码:

import random

# 各难度题库
low_question_ids = [1,2,3,4,5,6,7]                                                                                                                                                                
mid_question_ids = [44,55,66,77,88,99]                                                                                                                                                            
high_question_ids = [21, 22, 23, 24,25]    

def generate_quiz(quiz_total: int):
    # 匹配对应题量的难度抽题规则
    if quiz_total == 7:
        low_count, mid_count, high_count = 3, 2, 2
    elif quiz_total == 8:
        low_count, mid_count, high_count = 3, 3, 2
    else:
        raise ValueError("当前仅支持总题量为7或8的测验配置")
    
    # 无重复随机抽题
    selected_low = random.sample(low_question_ids, low_count)
    selected_mid = random.sample(mid_question_ids, mid_count)
    selected_high = random.sample(high_question_ids, high_count)

    # 合并题集并打乱顺序,不需要可以注释掉shuffle那行
    final_quiz = selected_low + selected_mid + selected_high
    random.shuffle(final_quiz)
    return final_quiz

# 测试生成7道题的测验
quiz_questions = 7
print(generate_quiz(quiz_questions))

补充说明:

  1. 当前给定的各难度题库题量均满足抽题要求,如果后续调整抽题数,需要先校验对应难度题库存量是否足够,否则random.sample会抛出值错误。
  2. 如果调试阶段需要固定抽题结果方便复现,可以在抽样逻辑前加random.seed(任意固定整数),就能得到可复现的抽题结果。

内容的提问来源于stack exchange,提问作者user12814331

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 10:21:19