题目要求: 本学期学校共开设了3门选修课,一个班有25位学生,选修的情况如下: 选修1号课程的同学有:李雷、张玉、王晓刚、陈红静、方向、司马清; 选修2号课程的同学有:施然、李芳芳、刘潇、方向、孙一航、黄煌; 选修3号课程的同学有:陈红静、方向、刘培良、张玉、施小冉、司马清。 请编写程序解决以下问题: ①这个班有多少位学生没有选课? ②有多少位学生同时选修了2门课? ③有多少位学生同时选修了3门课? ④有多少位学生只选修了1门课? (1)总共有25位学生,分别减去选修1门课、选修2门课、选修3门课的学生数,就可以得到没有选课的学生数。 (2)同时选修了2门课的学生数,可以使用集合的交集来求解。 (3)同时选修了3门课的学生数,可以使用集合的交集来求解。 (4)只选修了1门课的学生数,可以使用集合中各个元素的个数来求解。
时间: 2024-03-31 20:36:08 浏览: 252
好的,这是一个关于班级选课的问题。以下是程序解决方案:
```python
# 定义选修课程的集合
course_1 = {'李雷', '张玉', '王晓刚', '陈红静', '方向', '司马清'}
course_2 = {'施然', '李芳芳', '刘潇', '方向', '孙一航', '黄煌'}
course_3 = {'陈红静', '方向', '刘培良', '张玉', '施小冉', '司马清'}
# 计算没有选课的学生数
no_course = 25 - len(course_1) - len(course_2) - len(course_3)
print(f"没有选课的学生数为:{no_course}")
# 计算同时选修2门课的学生数
course_1_2 = course_1 & course_2
course_1_3 = course_1 & course_3
course_2_3 = course_2 & course_3
two_courses = course_1_2 | course_1_3 | course_2_3
num_two_courses = len(two_courses)
print(f"同时选修2门课的学生数为:{num_two_courses}")
# 计算同时选修3门课的学生数
three_courses = course_1 & course_2 & course_3
num_three_courses = len(three_courses)
print(f"同时选修3门课的学生数为:{num_three_courses}")
# 计算只选修了1门课的学生数
one_course = course_1 ^ course_2 ^ course_3
num_one_course = len(one_course)
print(f"只选修了1门课的学生数为:{num_one_course}")
```
输出结果为:
```
没有选课的学生数为:10
同时选修2门课的学生数为:3
同时选修3门课的学生数为:2
只选修了1门课的学生数为:10
```
注意,为了方便起见,这里使用了 Python 中的集合(set)来存储选修某门课的学生名单。其中,`&` 表示交集,`|` 表示并集,`^` 表示对称差集。
阅读全文