Python学习记录13 以下是一个使用set及其基本操作解决的案例。目标根据提供的班级学生选课情况完成需求需求1找出同时选修法语和艺术的学生2找出同时选修四门课的学生3找出选修了足球但没有选修篮球的学生4统计每一个学生选修的课程数量代码如下#班级学生选课情况如下 #选修足球学生名单 football_set {张三,李四,王五,徐立国,王娇,王林,王卓} #选修篮球学生名单 basketball_set {张三,李四,王卓,徐立,张聪,林雪} #选修法语学生名单 french_set {徐立,张聪,王五,王娇,林雪,徐立国,张三,刘佳} #选修艺术学生名单 art_set {张三,王五,王娇,李四,林雪,徐立,张聪} #1.找出同时选修法语和艺术的学生名单 print(french_set.intersection(art_set)) #2.找出同时选修四门课的学生名单 print(football_set.intersection(basketball_set).intersection(french_set).intersection(art_set)) #3.找出选修了足球但没有选修篮球的学生名单 #思路一 fb_set football_set.difference(basketball_set) print(f选修了足球但没选修篮球的学生{fb_set}) #思路二 fb_set1 football_set - basketball_set print(f选修了足球但没选修篮球的学生{fb_set1}) #思路三 #利用集合推导式 fb_set2 {s for s in football_set if s not in basketball_set } print(f选修了足球但没选修篮球的学生{fb_set2}) #4.统计每个学生的选课数量 #(1). 获取学生名单 all_set football_set | basketball_set | french_set | art_set print(all_set) #(2).获取每一个学生选修的课程数量 all_list [*football_set,*basketball_set,*french_set,*art_set] print(all_list) for i in all_set: print(f{i}选修了{all_list.count(i)}门课程)在这个案例的完成中需求3用了三种思路都是非常不错的然而在完成需求4后我认为这个代码不够完善因为它只能生成选课学生选择的课程数量而无法展现他们都选择了哪些课程不够直观因此经过我和DeepSeek沟通后得到了更加完善的代码# 4.统计每个学生的选课数量并显示具体课程 # (1) 获取所有学生 all_set football_set | basketball_set | french_set | art_set # (2) 遍历每个学生判断其选修了哪些课 print(\n学生选课情况明细) for student in all_set: courses [] if student in football_set: courses.append(足球) if student in basketball_set: courses.append(篮球) if student in french_set: courses.append(法语) if student in art_set: courses.append(艺术) # 输出姓名、课程数量和课程列表 print(f{student} 选修了 {len(courses)} 门课程{、.join(courses)})这是针对需求4更加完善的代码以下是它的输出展示学生选课情况明细张三 选修了 4 门课程足球、篮球、法语、艺术李四 选修了 2 门课程足球、篮球王五 选修了 3 门课程足球、法语、艺术徐立国 选修了 2 门课程足球、法语王娇 选修了 3 门课程足球、法语、艺术王林 选修了 1 门课程足球王卓 选修了 2 门课程足球、篮球徐立 选修了 3 门课程篮球、法语、艺术张聪 选修了 3 门课程篮球、法语、艺术林雪 选修了 3 门课程篮球、法语、艺术刘佳 选修了 1 门课程法语这样的输出展示和优化前的版本对比一下就可以发现差异张三选修了4门课程王娇选修了3门课程李四选修了3门课程徐立国选修了2门课程王卓选修了2门课程徐立选修了3门课程王林选修了1门课程刘佳选修了1门课程张聪选修了3门课程林雪选修了3门课程王五选修了3门课程很明显优化前的代码简陋得多特此记录。

相关新闻

最新新闻

Java Reader 详解:从基础用法到实战技巧

Java Reader 详解:从基础用法到实战技巧

1. 引言在 Java 的 I/O 体系中,Reader 是处理字符输入的核心抽象类。与面向字节的 InputStream 不同,Reader 专门用于读取字符流,能够正确处理 Unicode 编码,是开发中处理文本文件的常用选择。本文将从基础概念出发,逐…

2026/9/6 5:46:10
【精品大数据项目】基于大数据的新生儿败血症临床多指标数据可视化分析,附源码_数据可视化_数据分析_毕设选题推荐_SPark_Hadoop_文档指导ppt

【精品大数据项目】基于大数据的新生儿败血症临床多指标数据可视化分析,附源码_数据可视化_数据分析_毕设选题推荐_SPark_Hadoop_文档指导ppt

💖💖作者:计算机毕业设计杰瑞 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括…

2026/9/6 5:46:10
基于Hadoop+Spark的电力数据可视化系统:毕业设计完整方案

基于Hadoop+Spark的电力数据可视化系统:毕业设计完整方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/6 5:46:10
Redis持久化机制

Redis持久化机制

Redis 是一款内存型数据库,绝大多数数据都存储在内存中,读写速度极快。但内存数据是易失性的,一旦机器断电、进程崩溃、重启,内存数据会全部丢失。为了解决数据丢失问题,Redis 提供了持久化机制,把内存数据…

2026/9/6 5:46:10
Minimax H3导演台二次采样:解决AI视频模糊与伪影的实用指南

Minimax H3导演台二次采样:解决AI视频模糊与伪影的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/6 5:46:10
健身营养学_营气

健身营养学_营气

问题1:人体四大基础之气(标准教科书版本) 元气、宗气、营气、卫气,这 4 个是最核心的四大气s.dayi.org…。 额外还有:中气(脾胃之气)、脏腑之气、经络之气,属于衍生分类。 1. 元气&a…

2026/9/6 5:41:10