如何为字典添加多值:基于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
相关产品推荐
相关产品推荐

