1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
stu = {'name': 'stu1', 'age': 18, 'score': 100, 'tel': '17728162254'', 'sex': '女'}
2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.删除性别不明的所有学生
g.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
stu_list = [
{'name': 'stu1', 'age': 18, 'score': 100, 'tel': '17728162254', 'sex': '男'},
{'name': 'stu2', 'age': 15, 'score': 45, 'tel': '17728162256', 'sex': '女'},
{'name': 'stu3', 'age': 19, 'score': 85, 'tel': '17728162258', 'sex': '不明'},
{'name': 'stu4', 'age': 16, 'score': 56, 'tel': '17728162255', 'sex': '女'},
{'name': 'stu5', 'age': 20, 'score': 79, 'tel': '17728162251', 'sex': '男'},
{'name': 'stu6', 'age': 17, 'score': 89, 'tel': '17728162258', 'sex': '女'}
]
count_fail = 0 # 不及格学生个数
count_immaturity = 0 # 未成年学生的个数
for stu in stu_list:
# a.统计不及格学生的个数
# b.打印不及格学生的名字和对应的成绩
if stu['score'] < 60:
count_fail += 1
print(stu['name'], '同学的成绩不及格,是:', stu['score'])
# c.统计未成年学生的个数
if stu['age'] < 18:
count_immaturity += 1
# d.打印手机尾号是8的学生的名字
if int(stu['tel']) % 10 == 8:
print(stu['name'], '同学的手机尾号是8')
print('不及格学生的个数:', count_fail)
print('未成年学生的个数', count_immaturity)
score_list = [x['score'] for x in stu_list] # 定义列表变量score_list保存所有成绩
score_list.sort(reverse=True) # 将成绩从大到小排列
stu_list1 = [] # 定义列表stu_list1保存按学生成绩从大到小排序
# e.打印最高分和对应的学生的名字
for stu in stu_list:
if stu['score'] == score_list[0]:
print('最高分的学生是:', stu['name'])
if stu['score'] == score_list[-1]:
print('最低分的学生是:', stu['name'])
# g.将列表按学生成绩从大到小排序
# 方法一:
for score in score_list:
for stu in stu_list:
if stu['score'] == score:
stu_list1.append(stu)
break
print(stu_list1)
# 方法二:
stu_list2 = [stu for score in score_list for stu in stu_list if stu['score'] == score]
print(stu_list2)
# f.删除性别不明的所有学生
# 方法一:
stu_sex = []
for stu in stu_list:
if stu['sex'] != '不明':
stu_sex.append(stu)
print(stu_sex)
# 方法二:
stu_sex2 = [stu for stu in stu_list if stu['sex'] != '不明']
print(stu_sex2)
3.用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字
subject1 = {'stu1', 'stu2', 'stu3', 'stu4', 'stu5', 'stu8'}
subject2 = {'stu5', 'stu2', 'stu1', 'stu7', 'stu4'}
subject3 = {'stu1', 'stu6', 'stu7', 'stu4', 'stu5', 'stu9'}
subject = subject1 | subject2 | subject3
print(subject)
# a. 求选课学生总共有多少人
print('选课学生总人数是:', len(subject))
# b. 求只选了第一个学科的人的数量和对应的名字
subject_only = subject1 - subject2 - subject3
print('只选了第一个学科的人的数量和对应的名字:', len(subject_only), subject_only)
# c. 求只选了一门学科的学生的数量和对应的名字
subject_only1 = ((subject1 ^ subject2) - subject3) | ((subject1 ^ subject3) - subject2)
print('只选了一门学科的学生的数量和对应的名字:', len(subject_only1), subject_only1)
# d. 求只选了两门学科的学生的数量和对应的名字
subject_only2 = (subject1 & subject2 - subject3) | (subject1 & subject3 - subject2) | (subject2 & subject3 - subject1)
print('只选了两门学科的学生的数量和对应的名字:', len(subject_only2), subject_only2)
# e. 求选了三门学生的学生的数量和对应的名字
subject_both = subject1 & subject2 & subject3
print('选了三门学生的学生的数量和对应的名字:', len(subject_both), subject_both)