Python猜题游戏优化咨询:实现通用奖励功能无需多文件
解决思路与实现方案
核心逻辑:传递当前题目标识
不需要为每个题目单独创建文件,关键是在调用奖励功能时,把当前题目的编号/唯一标识传递过去,让奖励功能能根据这个标识获取对应题目提示或题目内容。
具体实现步骤
统一存储题目数据
- 把所有题目、提示(包括第二提示)整理成一个统一的数据结构,比如字典列表或者JSON文件,示例:
# 可放在主程序内,或单独配置文件如questions.py questions = [ { "id": 1, "title": "第一题:Python中用于输出的函数是?", "hint1": "它的英文意思是打印", "hint2": "函数名以p开头" }, { "id": 2, "title": "第二题:列表的索引从几开始?", "hint1": "不是1", "hint2": "是自然数的起始数" }, { "id": 3, "title": "第三题:Python中单行注释用什么符号?", "hint1": "是一个英文符号", "hint2": "和感叹号在同一个键位" } ]
- 把所有题目、提示(包括第二提示)整理成一个统一的数据结构,比如字典列表或者JSON文件,示例:
调用奖励功能时传递题目ID
- 主程序运行到对应题目时,调用奖励功能脚本(比如
bonus_feature.py),通过命令行参数传递当前题目ID,示例:import subprocess # 实际运行时替换为当前题目对应的ID current_question_id = 3 subprocess.run(["python", "bonus_feature.py", str(current_question_id)])
- 主程序运行到对应题目时,调用奖励功能脚本(比如
奖励功能脚本接收并识别题目ID
- 在
bonus_feature.py里,通过sys.argv获取命令行参数,拿到题目ID后从统一数据中匹配对应内容:import sys # 可导入主程序的questions,或复制数据、读取JSON文件 questions = [ # 同上的题目数据 ] if __name__ == "__main__": if len(sys.argv) < 2: print("未指定题目ID") sys.exit(1) current_qid = int(sys.argv[1]) # 匹配对应题目 for q in questions: if q["id"] == current_qid: current_question = q break else: print("找不到对应题目") sys.exit(1) # 根据玩家请求执行对应操作 print("请选择操作:1.查看第二提示 2.查看题目") choice = input("> ") if choice == "1": print(f"第二提示:{current_question['hint2']}") elif choice == "2": print(f"题目:{current_question['title']}") # 此处可添加点数扣除逻辑,后续可将点数变化结果返回主程序
- 在
进阶优化(可选)
- 若题目数量较多,可将题目数据存入
questions.json文件,在主程序和奖励功能脚本中统一读取,避免数据重复:import json with open("questions.json", "r", encoding="utf-8") as f: questions = json.load(f) - 可通过管道或返回值的方式,让奖励功能脚本将点数变化情况反馈给主程序,更新玩家点数。
内容的提问来源于stack exchange,提问作者SOTS1759
相关产品推荐
相关产品推荐

