当前位置: 首页 > news >正文

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

综合实战

实战一:学生成绩管理系统

📋 项目需求

  1. 添加学生信息(姓名、成绩)
  2. 查询学生成绩
  3. 修改学生成绩
  4. 删除学生信息
  5. 统计平均分、最高分、最低分
  6. 成绩排序

💻 完整代码

# ============================================ # 项目名称:学生成绩管理系统 # 作者:你的名字 # 日期: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("❌ 无效选项,请重新输入!")

实战二:购物车系统

📋 项目需求

  1. 添加商品到购物车
  2. 移除商品
  3. 修改商品数量
  4. 计算总价
  5. 清空购物车
  6. 显示购物车内容

💻 完整代码

# ============================================ # 项目名称:购物车系统 # 作者:你的名字 # 日期: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("❌ 无效选项,请重新输入!")

实战三:待办事项列表

📋 项目需求

  1. 添加待办事项
  2. 标记完成
  3. 删除事项
  4. 显示所有/已完成/未完成
  5. 统计进度

💻 完整代码

# ============================================ # 项目名称:待办事项列表 # 作者:你的名字 # 日期: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 篇所学的知识(变量、运算符、流程控制、字符串、列表与元组),没有使用函数和类。等第七篇学习函数后,可以将这些代码重构为更模块化、更易维护的版本!

http://www.cnnetsun.cn/news/1345694.html

相关文章:

  • 详细梳理移动通信技术从1G到5G(及展望6G)的核心特征、区别以及迭代背后的驱动原因
  • Anaconda 虚拟环境安装到 D 盘
  • 深港无缝清关的未来发展趋势
  • 收藏!小白程序员必看:手把手带你理解大模型Manus的核心架构与工作原理
  • 如何用WindowTop提升Windows多任务效率?解锁窗口管理新技巧
  • ViiTor对话翻译:让跨语言对话如此简单
  • 下载 | Win10正式版最新系统ISO映像 (22H2、19045.7058、多合一版本)-修复系统问题
  • Qwen3-ASR-0.6B真实案例分享:自媒体博主日均处理20+小时播客音频全记录
  • 实战指南:基于快马AI生成动态绑定文章数据的jiathis分享页
  • Deliberate模型全解析:从价值定位到效能突破的实践指南
  • Openlayer加载geoserver的WMS地图服务的两种方式
  • 口碑好的免费办公软件供应商
  • 工厂制造运营:从流程管理到系统协同的演进
  • LumiPixel Canvas Quest生成人像的多样性评估:避免“脸盲”与模式崩溃
  • 有源晶振和无源晶振
  • DDColor镜像免配置:预装ffmpeg-python,支持MP4视频逐帧着色+音频保留合成
  • 5分钟搞懂排序算法稳定性:为什么面试官总爱问这个?
  • **松江万达英语培训2026指南,如何选择适合职场人士的课程**
  • Git + 云原生:如何管理K8s配置版本?将Git作为声明式基础设施的唯一真相源
  • 2026 年费控系统推荐|5 大热门费控管理系统对比(用户真实口碑)
  • Spring Cloud Java后端面试题精选 - Day 9
  • Phi-3-Mini-128K多轮对话效果深度评测:上下文保持与逻辑一致性
  • 2026年中国零售与电商软件系统权威推荐:从开源商城到OMS中台
  • Qwen3-ASR-1.7B效果展示:上海话生活对话→自然口语转书面语案例
  • 《道德经》第二章
  • AgentCPM在企业级.NET技术栈中的集成与部署方案
  • 巧用队列轻松解决3000ms时间窗口请求计数问题 : Leetcode 933
  • python+Ai技术框架的爬虫基于 的会议室预订系统设计与实现django flask
  • 年薪 12 万、35万、60万、90 万的网络安全工程师,能力上到底有啥差别?
  • 乡合农服土壤改良:给土地“治病”,让丰收“生根”