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, key=lambda x: x[1]) order = "升序" else: sorted_students = sorted(students, key=lambda x: x[1], reverse=True) 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 篇所学的知识(变量、运算符、流程控制、字符串、列表与元组),没有使用函数和类。等第七篇学习函数后,可以将这些代码重构为更模块化、更易维护的版本!
