新闻详情

新闻详情

首页 / 资讯中心 / 详情

大学生学Python一个月 :从零到完整可运行源码

发布时间:2026/10/1 21:15:03来源:尧图网络
大学生学Python一个月 :从零到完整可运行源码
一、项目简介本次使用 Python 基础语法 列表字典 函数封装 JSON 文件操作完成一个控制台英雄信息管理系统。实现功能查看所有英雄信息添加英雄自动去重删除英雄修改英雄定位、难度按名称查询英雄数据保存到本地 JSON 文件重新加载默认英雄数据退出自动保存二、项目技术栈列表 字典存储多条英雄数据函数封装功能模块化while 循环菜单交互系统文件读写with open 语法json 模块数据持久化保存字符串处理、遍历判断、异常捕获三、完整源码import json 数据层 DATA_FILE heroes.json 默认英雄数据覆盖王者五大位置 DEFAULT_HEROES [ {name: 吕布, position: 对抗路, difficulty: 3}, {name: 韩信, position: 打野, difficulty: 4}, {name: 妲己, position: 中路, difficulty: 2}, {name: 后羿, position: 发育路, difficulty: 2}, {name: 蔡文姬, position: 辅助, difficulty: 2}, ] def load_data(): 从本地 JSON 文件读取英雄数据文件不存在时返回默认数据 try: with open(DATA_FILE, r, encodingutf-8) as f: return json.load(f) except (FileNotFoundError, json.JSONDecodeError): return [dict(h) for h in DEFAULT_HEROES] def save_data(heroes): 把英雄列表写入本地 JSON 文件保留中文并格式化输出 with open(DATA_FILE, w, encodingutf-8) as f: json.dump(heroes, f, ensure_asciiFalse, indent2) 功能层 def show_all(heroes): 遍历列表打印所有英雄信息 print(\n * 40) for i, hero in enumerate(heroes, 1): print(f{i}. {hero[name]} | 定位{hero[position]} | 难度{hero[difficulty]}) print( * 40) def add_hero(heroes): 添加英雄自动去重 输入合法性校验 name input(请输入英雄名称).strip() if not name: print(【错误】名称不能为空) return # 遍历已有英雄重名直接拦截 for hero in heroes: if hero[name] name: print(f【错误】英雄「{name}」已存在添加失败) return position input(请输入定位如 对抗路/打野/中路/发育路/辅助).strip() if not position: print(【错误】定位不能为空) return # 难度范围检查必须是 1-5 之间的整数 try: difficulty int(input(请输入难度1-5).strip()) except ValueError: print(【错误】难度必须是数字添加失败) return if difficulty 1 or difficulty 5: print(【错误】难度必须在 1-5 之间添加失败) return heroes.append({name: name, position: position, difficulty: difficulty}) print(f英雄「{name}」添加成功) def delete_hero(heroes): 删除英雄使用 enumerate 精准定位 name input(请输入要删除的英雄名称).strip() for i, hero in enumerate(heroes): if hero[name] name: heroes.pop(i) print(f英雄「{name}」已删除) return print(f未找到英雄「{name}」) def modify_hero(heroes): 修改英雄定位、难度 name input(请输入要修改的英雄名称).strip() for hero in heroes: if hero[name] name: hero[position] input(请输入新的定位).strip() if not hero[position]: print(【错误】定位不能为空修改失败) return try: hero[difficulty] int(input(请输入新的难度1-5).strip()) except ValueError: print(【错误】难度必须是数字修改失败) return if hero[difficulty] 1 or hero[difficulty] 5: print(【错误】难度必须在 1-5 之间修改失败) return print(f英雄「{name}」修改成功) return print(f未找到英雄「{name}」) def query_hero(heroes): 按名称精准查询英雄 name input(请输入要查询的英雄名称).strip() for hero in heroes: if hero[name] name: print(f名称{hero[name]} | 定位{hero[position]} | 难度{hero[difficulty]}) return print(f未找到英雄「{name}」) def reset_data(): 一键恢复默认英雄数据 return [dict(h) for h in DEFAULT_HEROES] 主程序层 def main(): heroes load_data() while True: print(\n 英雄信息管理系统 ) print(1. 查看所有英雄) print(2. 添加英雄) print(3. 删除英雄) print(4. 修改英雄) print(5. 查询英雄) print(6. 重载默认数据) print(0. 退出并保存) choice input(请选择操作).strip() if choice 1: show_all(heroes) elif choice 2: add_hero(heroes) elif choice 3: delete_hero(heroes) elif choice 4: modify_hero(heroes) elif choice 5: query_hero(heroes) elif choice 6: heroes reset_data() print(已恢复默认英雄数据) elif choice 0: save_data(heroes) print(数据已保存再见) break else: print(无效输入请重新选择) if name main: try: main() except KeyboardInterrupt: # 强制中断时自动保存防止数据丢失 print(\n检测到强制中断正在保存数据...) save_data(load_data()) print(数据已保存再见)四、系统功能详解数据初始化程序启动自带 5 条完整英雄数据覆盖王者五大位置对抗路、打野、中路、发育路、辅助使用 列表嵌套字典 存储是 Python 最经典的结构化数据写法。数据保存功能使用 json.dump() 将列表数据写入本地文件ensure_asciiFalse 保留中文不乱码indent2 格式化输出文件整洁美观查看英雄遍历列表循环打印所有英雄信息加入分割线界面整洁。添加英雄核心亮点自动判断英雄重名遍历已有英雄重复直接拦截保证数据不重复。删除英雄使用 enumerate 同时获取下标和数据精准删除指定字典。修改英雄根据英雄名匹配直接修改字典内部 position、difficulty 字段。查询英雄精准匹配名称单独展示单个英雄信息。重载与自动保存支持一键恢复初始数据退出 / 强制中断 自动保存数据防止丢失五、项目核心知识点总结列表 字典 结构化数据存储必考函数模块化编程代码整洁易维护文件上下文 with 语句 自动关闭文件JSON 数据持久化实现数据存盘while 死循环菜单系统enumerate 遍历带下标输入处理、去空格、数据查重逻辑六、项目优点完全使用 Python 基础语法零基础也能看懂标准增删改查CRUD结构非常适合作业提交代码分层清晰数据层、功能层、主程序层自带数据校验、容错提示、自动保存七、可拓展方向可写在作业总结读取本地 JSON 文件初始化数据增加模糊查询增加难度筛选、定位筛选完善输入合法性校验优化 UI 界面八、运行效果预览1. 查看所有英雄操作步骤在主菜单输入 1 并回车。输入示例pre请选择操作1输出结果pre吕布 | 定位对抗路 | 难度3韩信 | 定位打野 | 难度4妲己 | 定位中路 | 难度2后羿 | 定位发育路 | 难度2蔡文姬 | 定位辅助 | 难度2 2. 添加英雄操作步骤在主菜单输入 2 并回车依次输入英雄名称、定位和难度。输入示例请选择操作2 请输入英雄名称孙悟空 请输入定位如 对抗路/打野/中路/发育路/辅助打野 请输入难度1-54输出结果pre英雄「孙悟空」添加成功3. 删除英雄操作步骤在主菜单输入 3 并回车输入要删除的英雄名称。输入示例pre请选择操作3 请输入要删除的英雄名称后羿输出结果pre英雄「后羿」已删除4. 修改英雄操作步骤在主菜单输入 4 并回车输入要修改的英雄名称再输入新的定位和难度。输入示例pre请选择操作4 请输入要修改的英雄名称妲己 请输入新的定位中路 请输入新的难度1-53输出结果pre英雄「妲己」修改成功5. 查询英雄操作步骤在主菜单输入 5 并回车输入要查询的英雄名称。输入示例pre请选择操作5 请输入要查询的英雄名称吕布输出结果pre名称吕布 | 定位对抗路 | 难度36. 重载默认数据操作步骤在主菜单输入 6 并回车。输入示例pre请选择操作6输出结果pre已恢复默认英雄数据7. 退出并保存操作步骤在主菜单输入 0 并回车。输入示例pre请选择操作0输出结果数据已保存再见
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

YOLOv5实战:从数据集训练到TensorRT部署全流程解析 2026/10/1 22:17:38

YOLOv5实战:从数据集训练到TensorRT部署全流程解析

简介:面向YOLOv5学习者的完整实战代码仓库,内容按入门、拓展、进阶、部署四篇编排,从环境安装、模型推理、数据集构建、模型训练,到界面开发、网页演示、云端服务器训练、推理加速部署等均有涉及,适合零基础起步、逐步…

阅读更多 →
日置电阻测试仪上位机源码实战:C#串口采集与判定系统 2026/10/1 22:17:31

日置电阻测试仪上位机源码实战:C#串口采集与判定系统

简介:面向电气测量与自动化测试开发者的XCS电阻测试软件完整源码包,聚焦C#与日置电阻测试仪的集成控制,完整覆盖串口连接、SCPI命令生成与发送、回显解析、量程切换、阻值换算、断线重连、异常返回码判断等自动化测试闭环,适合正在…

阅读更多 →
工业 AP 的三流射频部署实践:3×3 MIMO 链路预算、驱动适配与载板集成 2026/10/1 22:17:02

工业 AP 的三流射频部署实践:3×3 MIMO 链路预算、驱动适配与载板集成

WLE900VX 7AA给嵌入式整机配无线模块,参数表只能回答一半问题,另一半在驱动、载板和校准口径里。本文以一块双频 33 802.11ac MiniPCIe 模块(型号 WLE900VX,高通 QCA9880 平台)为参考,整理三流 MiniPCIe 无…

阅读更多 →
从v3到v4:Godot AI升级迁移指南与签名自更新系统原理 2026/10/1 22:16:55

从v3到v4:Godot AI升级迁移指南与签名自更新系统原理

从v3到v4:Godot AI升级迁移指南与签名自更新系统原理 【免费下载链接】godot-ai Production-grade MCP server and AI tools for the Godot engine. A Snap to install. Totally free and fun. 项目地址: https://gitcode.com/gh_mirrors/go/godot-ai Godot …

阅读更多 →
组态王与MCGS触摸屏Modbus TCP通讯配置、地址映射与故障排查 2026/10/1 22:16:35

组态王与MCGS触摸屏Modbus TCP通讯配置、地址映射与故障排查

上个月帮一家做乡镇污水提升泵站的朋友调系统,原来的上位机是组态王跑在一台工控机上,现场新装了两台 MCGS 的 TPC 触摸屏做就地操作面板,要求是两边都能看到同一套液位、流量、泵状态,还要能互相下发启停指令。朋友一开始打算用两…

阅读更多 →
北京智灵聚诚:律师行业AI搜索优化,增加案源曝光可能性 2026/10/1 22:16:22

北京智灵聚诚:律师行业AI搜索优化,增加案源曝光可能性

什么是GEO生成式引擎优化?什么是GEO生成式引擎优化?很多人对这个新概念还比较陌生,其实它是AI搜索时代,适配用户搜索行为变迁诞生的全新营销获客方式。随着生成式AI的快速普及,用户获取信息的方式已经发生了本质变化:过去用户找…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉