1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
info = [('姓名','小小'),('年龄',19),('成绩',100),('电话','120'),('性别','不明')]
stu_dic = dict(info)
print(stu_dic)
2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.删除性别不明的所有学生
g.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
students = [
{'姓名': '小小', '年龄': 19, '成绩': 100, '电话': '120', '性别': '不明'},
{'姓名': '小大', '年龄': 5, '成绩': 23, '电话': '110', '性别': '男'},
{'姓名': '大小', '年龄': 77, '成绩': 56, '电话': '114', '性别': '女'},
{'姓名': '大大', '年龄': 46, '成绩': 67, '电话': '123', '性别': '不明'},
{'姓名': '中中', '年龄': 12, '成绩': 35, '电话': '119', '性别': '女'},
{'姓名': '小中', '年龄': 45, '成绩': 75, '电话': '888', '性别': '男'},
]
# a.不及格个数
print(sum([True
for stu in students
if stu['成绩'] < 60]))
# b.不及格名字、成绩
print([(stu['姓名'], stu['成绩'])
for stu in students
if stu['成绩'] < 60])
# c.未成年个数
print(sum([True
for stu in students
if stu['年龄'] < 18]))
# d.手机尾号是8的学生名字
print([stu['姓名']
for stu in students
if stu['电话'][-1] == '8'])
# e.最高分、名字
best_score = max([stu['成绩']
for stu in students])
print([(stu['成绩'], stu['姓名'])
for stu in students
if stu['成绩'] == best_score])
# f.删除性别不明的学生
[students.remove(stu)
for stu in students.copy()
if stu['性别'] == '不明']
print(students)
# g.排序列表按学生成绩从,大到小
scores = [stu['成绩']
for stu in students]
print([stu
for score in sorted(scores, reverse=True)
for stu in students
if stu['成绩'] == score])
3.用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字
subject1 = {'小名', '小关', '小光', '小明', '小飞', '小红', '小朱', '小葱', '小艾'}
subject2 = {'小傻', '小本', '小德', '小关', '小海', '小妮', '小葛', '小飞', '小杰'}
subject3 = {'小强', '小明', '小朱', '小红', '小德', '小紫', '小艾', '小马', '小飞'}
# a. 求选课学生总共有多少人
all_stu = subject1 | subject2 | subject3
print(f'选课的共有{len(all_stu)}人。\n')
# b. 求只选了第一个学科的人的数量和对应的名字
only_sub1 = subject1 - subject2 - subject3
print(f'只选了第一个学科的有{len(only_sub1)}人,分别是:{[stu for stu in only_sub1]}。\n')
# c. 求只选了一门学科的学生的数量和对应的名字
only_one = subject1 ^ subject2 ^ subject3
print(f'只选了一门学科的有{len(only_one)}人,分别是:{[stu for stu in only_one]}。\n')
# e. 求选了三门学生的学生的数量和对应的名字
only_three = subject1 & subject2 & subject3
print(f'选了三门的有{len(only_three)}人,分别是:{[stu for stu in only_three]}。\n')
# d. 求只选了两门学科的学生的数量和对应的名字
only_two = all_stu - only_one - only_three
print(f'只选了两门的有{len(only_two)}人,分别是:{[stu for stu in only_two]}。\n')