1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
class Student(dict):
name: str = str()
age: int = int()
grade: int = int()
cell_number: str = str()
sex: int = int()
def __init__(self, **kwargs):
self.set_attr(**kwargs)
def set_attr(self, **kwargs):
for key, val in kwargs.items():
if hasattr(self, key):
setattr(self, key, val)
return self
2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
g.删除性别不明的所有学生
class Students:
result: dict = {
'count': 0,
'source': []
}
def __init__(self):
self.students = []
def fill(self, students: list) -> None:
if students:
self.students = [Student(**each) for each in students]
def select(self, keys: str, rule: object = None) -> dict:
"""
:param keys: 存放查询规则,格式如下
(需要筛选的字段,)
:param rule: 筛选规则
:return: 返回满足条件的结果
"""
if not rule or not isinstance(keys, str):
return None
result = [filter(rule(getattr(student, keys, None)) for student in self.students)]
self.result['count'] = len(result)
self.result['source'] = result
return self.result
3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字