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

不借助collections.shuffle()实现分难度随机无重复展示15道题目

不用collections.shuffle()实现分阶段随机无重复展示题目

没问题!咱们完全可以不靠collections.shuffle()来实现你的需求——核心思路是随机生成列表索引+移除已选中的元素,这样既能保证无重复,又能按你要的顺序(先简单、再中等、最后难题)来展示。

具体实现步骤

  • 先把你的15道题按难度拆成三个独立列表:比如easy_questions(至少5道)、medium_questions(至少5道)、hard_questions(至少5道)
  • 写一个通用的小函数,负责从指定列表里随机选出N道不重复的题目
  • 按要求的顺序,先调用函数选5道简单题,展示完再选5道中等题,最后选5道难题

完整代码示例

假设你的题目数据是这样的(你可以直接替换成自己的实际题目内容):

# 示例题目集合,替换成你自己的题目即可
easy_questions = ["简单题1", "简单题2", "简单题3", "简单题4", "简单题5", "简单题6", "简单题7", "简单题8", "简单题9", "简单题10"]
medium_questions = ["中等题1", "中等题2", "中等题3", "中等题4", "中等题5", "中等题6", "中等题7", "中等题8", "中等题9", "中等题10"]
hard_questions = ["难题1", "难题2", "难题3", "难题4", "难题5", "难题6", "难题7", "难题8", "难题9", "难题10"]

然后是核心的选题函数和展示逻辑:

import random

def pick_unique_random(question_list, num_to_pick):
    selected = []
    # 复制原列表,避免修改原始题目数据
    temp_list = question_list.copy()
    for _ in range(num_to_pick):
        # 生成当前剩余列表的合法随机索引
        random_pos = random.randint(0, len(temp_list) - 1)
        # 取出题目并加入选中列表,同时从临时列表移除它(避免重复选)
        selected.append(temp_list.pop(random_pos))
    return selected

# 按要求顺序获取随机题目
selected_easy = pick_unique_random(easy_questions, 5)
selected_medium = pick_unique_random(medium_questions, 5)
selected_hard = pick_unique_random(hard_questions, 5)

# 分阶段展示题目
print("=== 随机简单题 ===")
for i, q in enumerate(selected_easy, 1):
    print(f"{i}. {q}")

print("\n=== 随机中等题 ===")
for i, q in enumerate(selected_medium, 1):
    print(f"{i}. {q}")

print("\n=== 随机难题 ===")
for i, q in enumerate(selected_hard, 1):
    print(f"{i}. {q}")

逻辑解释

  • 用temp_list = question_list.copy()复制原列表是为了保护你的原始题目数据,避免后续想再用的时候发现数据被改了
  • random.randint(0, len(temp_list)-1)会生成一个当前临时列表范围内的有效索引,绝对不会出现越界错误
  • 每次选完题目后用pop()移除它,这样临时列表里剩下的都是未被选中的题目,完美保证无重复
  • 分三次调用函数,严格按照先简单、再中等、最后难题的顺序展示,完全符合你的要求

这种方法逻辑直白,容易理解,完全不需要依赖collections.shuffle()就能实现你要的功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:34:19