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

Python如何从列表选取随机函数实现百万富翁类答题游戏随机出题功能?

随机出题功能实现方案

前提假设

先给出通用题库结构示例,你可以根据自己实际定义的字段调整代码:

# 示例题库结构
question_bank = [
    {
        "question": "1+1等于几?",
        "options": ["1", "2", "3", "4"],
        "correct_answer": "2",
        "bonus_level": 1
    },
    {
        "question": "Python的发明者是谁?",
        "options": ["吉多·范罗苏姆", "林纳斯·托瓦兹", "詹姆斯·高斯林", "比尔·盖茨"],
        "correct_answer": "吉多·范罗苏姆",
        "bonus_level": 3
    },
    # 其余题目省略
]

三种可行实现方案(对应你尝试过的方法的正确用法)

方案1:用random.choice实现单次随机抽题

适合灵活单题抽取的场景,是最常用的抽题实现:

import random

def get_random_question(question_bank):
    if not question_bank:
        return None # 题库为空时返回空值
    return random.choice(question_bank)

如果需要避免重复出题,每次抽题后把对应题目从原题库中移除即可:

selected_question = random.choice(question_bank)
question_bank.remove(selected_question)

方案2:用random.shuffle实现全题库乱序顺序出题

适合需要按顺序出完所有题、全程不重复的场景,注意random.shuffle是直接修改原列表,没有返回值,不要用变量接收它的返回结果:

import random

# 直接打乱原题库顺序
random.shuffle(question_bank)
# 按顺序遍历乱序后的题库即可实现不重复随机出题
for question in question_bank:
    # 此处执行你的游戏校验逻辑
    print(question["question"])

方案3:用random.choices实现按奖金档位权重抽题

适合需要控制不同难度/奖金档位题目抽中概率的场景,注意random.choices返回的是列表,取单个元素需要加索引:

import random

# 示例规则:奖金档位越低,抽中概率越高,可根据你的需求调整权重规则
weights = [5 if q["bonus_level"] ==1 else 3 if q["bonus_level"] ==2 else 1 for q in question_bank]
# k参数指定抽取题量,返回长度为k的列表
selected_question = random.choices(question_bank, weights=weights, k=1)[0]

常见调用失败排查点

  • 调用random相关方法前必须先导入模块:import random
  • 所有random列表操作方法仅支持非空列表入参,调用前先判断题库是否为空
  • 不要用变量接收random.shuffle的返回值,它会直接修改原列表
  • 从random.choices的返回结果中取单题时,必须加[0]索引

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:15:00