【周报】24点游戏Python实现与总结
一、本周工作概述本周我完成了一个基于Python的24点游戏实现。这是一个命令行交互式的数学游戏玩家需要利用随机抽取的4个数字通过加减乘除和括号组合成结果为24的算式。二、核心功能实现1. 游戏规则与界面从一副去除大小王的扑克牌中随机抽取4个数字1-13支持运算符、-、*、/、(、)输入完整的算式必须使用所有显示的数字各一次算式计算结果为24即获胜2. 主要功能模块2.1 数字验证函数def算式是否规范(算式,所有的数字):global游戏当前状态# 检查非法字符for用户输入的除了数字以外的单个字符inre.sub(r\d,,算式):if用户输入的除了数字以外的单个字符notin-*/():游戏当前状态输入了不符合预期的字符returnFalse# 检查数字使用情况ifCounter(re.findall(r\d,算式))!Counter(所有的数字):游戏当前状态输入了错误的数字returnFalsereturnTrue2.2 游戏主循环while游戏进行:运算结果是否正确False游戏当前状态出现了未知的错误# 随机抽取4个数字所有的数字random.sample(一副去除了大小王的扑克牌,4)# 获取用户输入用户输入input(f当前数字为{所有的数字[0]},{所有的数字[1]},{所有的数字[2]},{所有的数字[3]},请输入:)# 处理特殊命令if用户输入重新开始:游戏当前状态已重新开始elif用户输入退出:游戏进行False游戏当前状态即将于5秒后退出# 验证并计算算式elif算式是否规范(用户输入,所有的数字):try:运算结果是否正确(eval(用户输入)24)if运算结果是否正确:游戏当前状态恭喜!你的计算正确!else:游戏当前状态运算错误exceptException:运算结果是否正确False游戏当前状态语法错误print(游戏当前状态)三、技术亮点1. 输入验证机制使用正则表达式过滤非法字符通过Counter类精确验证数字使用情况确保用户输入符合游戏规则2. 错误处理语法错误捕获使用try-except处理eval()可能抛出的异常状态反馈实时显示游戏状态提升用户体验特殊命令支持重新开始和退出命令3. 数据结构设计使用列表存储扑克牌数字全局状态变量管理游戏流程模块化函数设计便于维护和扩展四、遇到的问题与解决方案1. 问题数字重复使用检测解决方案使用collections.Counter对比算式中的数字与给定数字确保每个数字使用且仅使用一次。2. 问题非法字符检测解决方案使用正则表达式re.sub(r\d, , 算式)移除所有数字然后检查剩余字符是否都在允许的运算符集合中。3. 问题算式安全性解决方案虽然使用了eval()但通过严格的输入验证确保了安全性只允许数字和指定运算符。五、运行示例24点游戏,输入完整的算式,必须包括所有显示的数字各一个可以包括运算符号、-、*、/、(、)。表达的算式的结果为24即胜利。 输入重新开始后将重新开始。 输入退出后在5秒后退出。 当前数字为3,8,4,6,请输入:(8-6/3)*4 恭喜!你的计算正确! 当前数字为5,5,5,1,请输入:5*(5-1/5) 运算错误 当前数字为2,3,4,5,请输入:重新开始 已重新开始六、后续优化方向1. 功能增强添加计时功能记录解题时间增加提示功能当用户卡住时提供可能的解法支持分数运算扩大游戏范围2. 用户体验改进添加图形界面GUI版本增加难度等级选择添加历史记录和排行榜功能3. 代码优化将全局变量改为类属性提高代码封装性添加单元测试确保代码质量优化错误提示信息更加友好明确七、总结本周实现的24点游戏虽然功能简单但涵盖了Python编程的多个重要方面字符串处理正则表达式、字符验证数据结构列表、计数器算法设计输入验证、状态管理用户体验交互设计、错误处理通过这个项目我巩固了Python基础语法学习了如何设计简单的命令行游戏并为后续更复杂的项目开发积累了经验。项目收获掌握了正则表达式在输入验证中的应用理解了游戏状态机的设计思路学会了如何平衡功能实现与代码可读性体验了从需求分析到代码实现的完整开发流程这个项目为我后续学习更复杂的算法和游戏开发打下了良好基础。编写时间2026年7月19日下周计划学习Python GUI编程为24点游戏添加图形界面