Python 零基础入门系列(五):实战答案

Python 零基础入门系列(五):实战答案 综合实战实战一学生成绩管理系统 项目需求添加学生信息姓名、成绩查询学生成绩修改学生成绩删除学生信息统计平均分、最高分、最低分成绩排序 完整代码# # 项目名称学生成绩管理系统 # 作者你的名字 # 日期2026-03-15 # 版本1.0 # print( * 50) print( 学生成绩管理系统) print( * 50) # 使用列表存储学生信息每个学生是元组 (姓名成绩) students [] while True: print(\n请选择操作) print(1. 添加学生) print(2. 查询成绩) print(3. 修改成绩) print(4. 删除学生) print(5. 显示所有) print(6. 成绩统计) print(7. 成绩排序) print(0. 退出系统) choice input(请输入选项 (0-7)) # 1. 添加学生 if choice 1: name input(请输入学生姓名) # 检查是否已存在 exists False for student in students: if student[0] name: exists True break if exists: print(f❌ 学生 {name} 已存在) else: grade float(input(请输入成绩)) students.append((name, grade)) print(f✅ 添加学生 {name} 成功成绩{grade}) # 2. 查询成绩 elif choice 2: name input(请输入学生姓名) found False for student in students: if student[0] name: print(f {student[0]} 的成绩{student[1]}) found True break if not found: print(f❌ 未找到学生 {name}) # 3. 修改成绩 elif choice 3: name input(请输入学生姓名) found False for i in range(len(students)): if students[i][0] name: new_grade float(input(请输入新成绩)) # 元组不可变需要重新创建 students[i] (name, new_grade) print(f✅ 更新 {name} 的成绩为 {new_grade}) found True break if not found: print(f❌ 未找到学生 {name}) # 4. 删除学生 elif choice 4: name input(请输入学生姓名) found False for student in students: if student[0] name: students.remove(student) print(f✅ 删除学生 {name} 成功) found True break if not found: print(f❌ 未找到学生 {name}) # 5. 显示所有 elif choice 5: if len(students) 0: print( 暂无学生数据) else: print(\n * 50) print( 学生列表) print( * 50) print(f{姓名:15} {成绩:10}) print(- * 50) for name, grade in students: print(f{name:15} {grade:10.1f}) print( * 50) # 6. 成绩统计 elif choice 6: if len(students) 0: print( 暂无学生数据) else: # 提取所有成绩 grades [] for student in students: grades.append(student[1]) total len(students) avg sum(grades) / total max_grade max(grades) min_grade min(grades) print(\n * 50) print( 成绩统计) print( * 50) print(f学生总数{total}) print(f平均分{avg:.2f}) print(f最高分{max_grade}) print(f最低分{min_grade}) print( * 50) # 7. 成绩排序 elif choice 7: if len(students) 0: print( 暂无学生数据) else: print(\n排序方式) print(1. 升序从低到高) print(2. 降序从高到低) sort_choice input(请选择 (1-2)) # 使用 sorted 创建新列表不修改原列表 if sort_choice 1: sorted_students sorted(students, keylambda x: x[1]) order 升序 else: sorted_students sorted(students, keylambda x: x[1], reverseTrue) order 降序 print(f\n✅ 按成绩{order}排序) print( * 50) for name, grade in sorted_students: print(f{name}: {grade}) print( * 50) # 0. 退出 elif choice 0: print( 感谢使用再见) break else: print(❌ 无效选项请重新输入)实战二购物车系统 项目需求添加商品到购物车移除商品修改商品数量计算总价清空购物车显示购物车内容 完整代码# # 项目名称购物车系统 # 作者你的名字 # 日期2026-03-15 # 版本1.0 # print( * 60) print( 购物车系统) print( * 60) # 购物车项[[商品名单价数量], ...] # 注意这里用列表而不是元组因为需要修改数量 cart [] while True: print(\n请选择操作) print(1. 添加商品) print(2. 移除商品) print(3. 修改数量) print(4. 显示购物车) print(5. 计算总价) print(6. 清空购物车) print(0. 退出系统) choice input(请输入选项 (0-6)) # 1. 添加商品 if choice 1: name input(请输入商品名称) price float(input(请输入商品单价)) quantity int(input(请输入商品数量)) # 检查是否已存在 found_index -1 for i in range(len(cart)): if cart[i][0] name: found_index i break if found_index 0: # 已存在增加数量 cart[found_index][2] quantity print(f✅ {name} 数量增加 {quantity}当前数量{cart[found_index][2]}) else: # 不存在添加新项 cart.append([name, price, quantity]) print(f✅ 添加商品{name} × {quantity}单价¥{price}) # 2. 移除商品 elif choice 2: name input(请输入要移除的商品名称) found False for item in cart: if item[0] name: cart.remove(item) print(f✅ 移除商品{name}) found True break if not found: print(f❌ 未找到商品{name}) # 3. 修改数量 elif choice 3: name input(请输入要修改的商品名称) found False for i in range(len(cart)): if cart[i][0] name: new_qty int(input(请输入新数量)) if new_qty 0: cart.remove(cart[i]) print(f✅ 移除商品{name}) else: cart[i][2] new_qty print(f✅ 更新 {name} 数量为 {new_qty}) found True break if not found: print(f❌ 未找到商品{name}) # 4. 显示购物车 elif choice 4: if len(cart) 0: print( 购物车为空) else: print(\n * 60) print( 购物车) print( * 60) print(f{商品:15} {单价:12} {数量:10} {小计:10}) print(- * 60) for item in cart: name, price, qty item subtotal price * qty print(f{name:15} ¥{price:11.2f} {qty:10} ¥{subtotal:.2f}) print(- * 60) # 计算总价 total 0 for item in cart: total item[1] * item[2] print(f{总计:39} ¥{total:.2f}) print( * 60) # 5. 计算总价 elif choice 5: if len(cart) 0: print( 购物车为空) else: total 0 for item in cart: total item[1] * item[2] print(f 购物车总价¥{total:.2f}) # 6. 清空购物车 elif choice 6: cart.clear() print(✅ 购物车已清空) # 0. 退出 elif choice 0: print( 感谢使用再见) break else: print(❌ 无效选项请重新输入)实战三待办事项列表 项目需求添加待办事项标记完成删除事项显示所有/已完成/未完成统计进度 完整代码# # 项目名称待办事项列表 # 作者你的名字 # 日期2026-03-15 # 版本1.0 # print( * 50) print( 待办事项列表) print( * 50) # 事项[[任务名是否完成], ...] # 用列表而不是元组因为需要修改完成状态 tasks [] while True: print(\n请选择操作) print(1. 添加任务) print(2. 标记完成) print(3. 删除任务) print(4. 显示所有任务) print(5. 显示未完成) print(6. 显示已完成) print(7. 统计进度) print(0. 退出系统) choice input(请输入选项 (0-7)) # 1. 添加任务 if choice 1: task input(请输入任务内容) # 检查是否已存在 exists False for t in tasks: if t[0] task: exists True break if exists: print(f❌ 任务已存在{task}) else: tasks.append([task, False]) # False 表示未完成 print(f✅ 添加任务{task}) # 2. 标记完成 elif choice 2: task input(请输入要完成的任务) found False for t in tasks: if t[0] task: if t[1]: print(f⚠️ 任务已完成{task}) else: t[1] True print(f✅ 完成任务{task}) found True break if not found: print(f❌ 未找到任务{task}) # 3. 删除任务 elif choice 3: task input(请输入要删除的任务) found False for t in tasks: if t[0] task: tasks.remove(t) print(f✅ 删除任务{task}) found True break if not found: print(f❌ 未找到任务{task}) # 4. 显示所有任务 elif choice 4: if len(tasks) 0: print( 暂无任务) else: print(\n * 50) print( 所有任务) print( * 50) for i, t in enumerate(tasks, 1): status ✅ if t[1] else ⬜ print(f{i}. {status} {t[0]}) print( * 50) # 5. 显示未完成 elif choice 5: pending [] for t in tasks: if not t[1]: pending.append(t) if len(pending) 0: print( 没有未完成任务) else: print(\n * 50) print( 未完成任务) print( * 50) for i, t in enumerate(pending, 1): print(f{i}. ⬜ {t[0]}) print( * 50) # 6. 显示已完成 elif choice 6: completed [] for t in tasks: if t[1]: completed.append(t) if len(completed) 0: print( 没有已完成任务) else: print(\n * 50) print( 已完成任务) print( * 50) for i, t in enumerate(completed, 1): print(f{i}. ✅ {t[0]}) print( * 50) # 7. 统计进度 elif choice 7: total len(tasks) if total 0: print( 暂无任务) else: completed_count 0 for t in tasks: if t[1]: completed_count 1 pending_count total - completed_count rate completed_count / total * 100 print(\n * 50) print( 进度统计) print( * 50) print(f总任务数{total}) print(f已完成{completed_count}) print(f未完成{pending_count}) print(f完成率{rate:.1f}%) # 进度条 bar_length 30 filled int(bar_length * rate / 100) bar █ * filled ░ * (bar_length - filled) print(f[{bar}] {rate:.1f}%) print( * 50) # 0. 退出 elif choice 0: print( 感谢使用再见) break else: print(❌ 无效选项请重新输入) 实战要点总结┌─────────────────────────────────────────────────────────────┐ │ 实战知识点总结 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ✅ 只用到了已学知识 │ │ • 变量与数据类型字符串、数字、布尔值 │ │ • 列表和元组的创建与操作 │ │ • 条件判断if/elif/else │ │ • 循环结构while/for │ │ • 列表方法append/remove/clear │ │ • 字符串格式化 │ │ │ │ ───────────────────────────────────────────────────────── │ │ │ │ ⚠️ 注意事项 │ │ • 元组不可变需要修改时用列表 │ │ • 遍历列表时删除元素要注意索引变化 │ │ • 使用标志变量found/exists跟踪查找结果 │ │ • 空列表判断用 len(list) 0 或 not list │ │ │ │ ───────────────────────────────────────────────────────── │ │ │ │ 编程技巧 │ │ • 用 while True break 实现菜单循环 │ │ • 用列表存储多个数据项 │ │ • 用元组存储固定结构的数据如学生信息 │ │ • 用列表存储需要修改的数据如购物车项 │ │ │ └─────────────────────────────────────────────────────────────┘ 重要说明以上实战代码仅使用了前 5 篇所学的知识变量、运算符、流程控制、字符串、列表与元组没有使用函数和类。等第七篇学习函数后可以将这些代码重构为更模块化、更易维护的版本