一次考试共考了语文、代数和外语三科。某小细共有九人,考后各科及格名单如下表,请编写算法找出科全及格的学生的名单(学号)。
时间: 2024-06-09 19:12:19 浏览: 115
已知一个链表,现编写一个函数search(),要求根据输入的学生学号,输出他的各科成绩。
3星 · 编辑精心推荐
可以使用Python来编写算法,具体步骤如下:
1. 创建三个集合,分别存储及格的语文、代数和外语学生的学号。
2. 遍历每个学生的及格名单,如果他们都及格了三门科目,就把他的学号添加到三个集合中。
3. 取三个集合的交集,即可得到科目全部及格的学生名单。
以下是Python代码实现:
```python
# 学生及格名单
pass_list = [{'id': 1, 'chinese': True, 'algebra': True, 'english': True},
{'id': 2, 'chinese': True, 'algebra': True, 'english': False},
{'id': 3, 'chinese': True, 'algebra': False, 'english': True},
{'id': 4, 'chinese': False, 'algebra': True, 'english': True},
{'id': 5, 'chinese': True, 'algebra': False, 'english': False},
{'id': 6, 'chinese': False, 'algebra': True, 'english': False},
{'id': 7, 'chinese': False, 'algebra': False, 'english': True},
{'id': 8, 'chinese': False, 'algebra': False, 'english': False},
{'id': 9, 'chinese': True, 'algebra': True, 'english': True}]
# 存储及格的语文、代数和外语学生的学号
chinese_pass = set()
algebra_pass = set()
english_pass = set()
# 遍历每个学生的及格名单,如果他们都及格了三门科目,就把他的学号添加到三个集合中
for student in pass_list:
if student['chinese'] and student['algebra'] and student['english']:
chinese_pass.add(student['id'])
algebra_pass.add(student['id'])
english_pass.add(student['id'])
# 取三个集合的交集,即可得到科目全部及格的学生名单
all_pass = chinese_pass & algebra_pass & english_pass
print(all_pass)
```
输出结果为:{1, 9},即学号为1和9的学生三门科目都及格了。
阅读全文