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))
补充说明:
- 当前给定的各难度题库题量均满足抽题要求,如果后续调整抽题数,需要先校验对应难度题库存量是否足够,否则
random.sample会抛出值错误。- 如果调试阶段需要固定抽题结果方便复现,可以在抽样逻辑前加
random.seed(任意固定整数),就能得到可复现的抽题结果。
内容的提问来源于stack exchange,提问作者user12814331
相关产品推荐
相关产品推荐

