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

如何用Python实现州首府多项选择题测验的选项生成功能?

解决州首府选择题选项生成问题

嘿,我懂你卡在生成4个选项(1个正确+3个错误)的环节了!其实核心就是两步:先锁定正确答案,再挑出3个不重复的错误选项,最后打乱顺序做成规整的选择题格式。我帮你把代码改好,直接就能用:

import random

# 这里替换成你自己的州首府字典就行
state_capitals = {
    "Texas": "Austin",
    "California": "Sacramento",
    "New York": "Albany",
    "Florida": "Tallahassee",
    "Illinois": "Springfield",
    # 剩下的州和首府...
}

file = open(r'''C:\Users\Leo\Desktop\Quiz1CSL.txt''',"w")
file.write("Austin's Computer Science State Capitals Quiz\n")

# 生成10道完整题目
for question_num in range(1, 11):
    # 随机选一个州作为题目主体
    random_state = random.choice(list(state_capitals.keys()))
    correct_capital = state_capitals[random_state]
    
    # 生成3个不重复的错误首府:先排除正确答案,再随机选3个
    all_capitals = list(state_capitals.values())
    wrong_candidates = [cap for cap in all_capitals if cap != correct_capital]
    selected_wrong = random.sample(wrong_candidates, 3)
    
    # 合并正确选项和错误选项,打乱顺序
    options = selected_wrong + [correct_capital]
    random.shuffle(options)
    
    # 写入题目内容
    file.write(f"\nQuestion {question_num}: What is the capital of {random_state}?\n")
    # 写入A/B/C/D格式的选项
    for idx, option in enumerate(options, start=65):  # 65对应ASCII码的A
        file.write(f"  {chr(idx)}. {option}\n")

file.close()

关键逻辑拆解:

  • 错误选项去重:用random.sample()而非random.choice()循环选,能直接保证3个错误选项不重复,也不会选到正确答案。
  • 选项随机排序:把正确选项混进错误选项后打乱,确保正确答案的位置每次都不一样,避免固定位置暴露答案。
  • 题目编号优化:把循环改成从1到10,给每个题目加上编号,测验格式更规范。

如果想加答案方便批改,还可以在循环里记录每个题的正确选项,最后写入文件末尾:

# 在循环前先定义一个存答案的列表
answers = []

# 每个题生成后加一行记录答案
answers.append(f"Question {question_num}: {chr(options.index(correct_capital)+65)}")

# 写完所有题目后写入答案区
file.write("\n--- Answer Key ---\n")
for ans in answers:
    file.write(f"{ans}\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:35:40