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

如何为字典添加多值:基于JSON的猜谜游戏多正确答案实现

解决猜谜游戏多正确答案的可行方案

嘿,这个问题我之前做类似的问答游戏时也碰到过!其实把单答案模式改成多答案模式的思路很清晰,咱们一步步来搞定:

第一步:调整JSON数据结构

原来的JSON是单个answer字段,现在咱们把它改成数组类型的answers字段,这样就能存储多个正确答案了。示例结构如下:

[
  {
    "question": "中国的首都是哪里?",
    "answers": ["北京", "Beijing", "beijing"]
  },
  {
    "question": "水的化学式是什么?",
    "answers": ["H2O", "h2o", "H₂O"]
  }
]

如果不想修改字段名,也可以把原来的answer直接改成数组(比如"answer": ["北京"]),这样后续代码统一处理数组即可,不用改太多变量名。

第二步:修改代码的判断逻辑

原来的代码是直接比较用户输入和单个答案,现在要改成检查用户输入是否存在于正确答案数组中。这里还可以做两个优化,大幅提升用户体验:

  • 忽略大小写(比如用户输入"beijing"也能判定正确)
  • 自动去除输入前后的空格(避免用户误输入空格导致错误)

以Python为例,修改后的判断代码如下:

import json

# 加载问答数据
with open("questions.json", "r", encoding="utf-8") as f:
    questions = json.load(f)

# 模拟用户答题流程
for q in questions:
    user_input = input(q["question"] + " ")
    # 清洗用户输入:去空格+转小写
    cleaned_input = user_input.strip().lower()
    # 把所有正确答案也转成小写,再检查是否匹配
    matched = any(ans.strip().lower() == cleaned_input for ans in q["answers"])
    if matched:
        print("答对啦!进入下一题~")
    else:
        print("答错了,再试试吧!")

第三步:批量转换旧数据(可选)

如果你的旧JSON已经有大量单答案的数据,不用手动一个个改,写个小脚本批量转换即可:

import json

# 读取旧数据
with open("old_questions.json", "r", encoding="utf-8") as f:
    old_data = json.load(f)

# 转换每个问题的单answer为数组形式的answers
new_data = []
for item in old_data:
    new_item = item.copy()
    if "answer" in new_item:
        new_item["answers"] = [new_item.pop("answer")]
    new_data.append(new_item)

# 保存新数据
with open("new_questions.json", "w", encoding="utf-8") as f:
    json.dump(new_data, f, indent=2, ensure_ascii=False)

常见问题排查

  • 如果运行时出现KeyError,大概率是JSON里的字段名和代码里的不一致(比如代码用answers但JSON还是answer),要确保两者统一。
  • 如果还是出现匹配问题,检查是否没做输入清洗(比如用户输入带空格或大小写不对),记得加上strip()和lower()处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:18:21