1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
message = {'name': '小红', 'age': 17, 'grade': 86, 'tel': 18692852958, 'gender': '女'}
2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
g.删除性别不明的所有学生
messages = [{'name': '小红', 'age': 17, 'grade': 86, 'tel': '18692852958', 'gender': '女'},
{'name': '小明', 'age': 18, 'grade': 84, 'tel': '18626474839', 'gender': '不明'},
{'name': '小刚', 'age': 18, 'grade': 43, 'tel': '18798237925', 'gender': '男'},
{'name': '小绿', 'age': 17, 'grade': 93, 'tel': '18684923808', 'gender': '不明'},
{'name': '小王', 'age': 19, 'grade': 54, 'tel': '18660285033', 'gender': '男'},
{'name': '小花', 'age': 16, 'grade': 69, 'tel': '18637928578', 'gender': '女'}]
# a.统计不及格学生的个数
count_1 = 0
for x in messages:
if x['grade'] < 60:
count_1 += 1
print('不及格学生的个数:', count_1)
# 不及格学生的个数: 2
# b.打印不及格学生的名字和对应的成绩
for x in messages:
if x['grade'] < 60:
print(x['name'], x['grade'])
# 小刚 43
# 小王 54
# c.统计未成年学生的个数
count_2 = 0
for i in messages:
if i['age'] < 18:
count_2 += 1
print('未成年学生的个数:', count_2)
# 未成年学生的个数: 3
# d.打印手机尾号是8的学生的名字
for i in messages:
if int(i['tel']) % 10 == 8:
print('手机尾号是8的学生的名字:', i['name'])
# 手机尾号是8的学生的名字: 小红
# 手机尾号是8的学生的名字: 小绿
# 手机尾号是8的学生的名字: 小花
# e.打印最高分和对应的学生的名字
max_grade = 0
for i in messages:
if i['grade'] > max_grade:
max_grade = i['grade']
for i in messages:
if i['grade'] == max_grade:
print('最高分:', max_grade, '姓名:', i['name'])
# 最高分: 93 姓名: 小绿
# f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
i = 0
for x in range(len(messages) - 1):
for y in range(i + 1, len(messages)):
if messages[x]['grade'] < messages[y]['grade']:
messages[x], messages[y] = messages[y], messages[x]
i += 1
print(messages)
[{'name': '小绿', 'age': 17, 'grade': 93, 'tel': 18684923808, 'gender': '不明'},
{'name': '小红', 'age': 17, 'grade': 86, 'tel': 18692852958, 'gender': '女'},
{'name': '小明', 'age': 18, 'grade': 84, 'tel': 18626474839, 'gender': '不明'},
{'name': '小王', 'age': 19, 'grade': 54, 'tel': 18660285033, 'gender': '男'},
{'name': '小刚', 'age': 18, 'grade': 43, 'tel': 18798237925, 'gender': '男'},
{'name': '小花', 'age': 16, 'grade': 69, 'tel': 18637928578, 'gender': '女'}]
# g.删除性别不明的所有学生
for i in messages[:]:
if i['gender'] != '男' and i['gender'] != '女':
messages.remove(i)
print(messages)
# [{'name': '小红', 'age': 17, 'grade': 86, 'tel': 18692852958, 'gender': '女'},
# {'name': '小刚', 'age': 18, 'grade': 43, 'tel': 18798237925, 'gender': '男'},
# {'name': '小王', 'age': 19, 'grade': 54, 'tel': 18660285033, 'gender': '男'},
# {'name': '小花', 'age': 16, 'grade': 69, 'tel': 18637928578, 'gender': '女'}]
3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字
Chinese = ['小红', '小刚', '小明', '小花']
Math = ['小强', '小明', '小花']
English = ['小明', '小刚', '小兰']
# a. 求选课学生总共有多少人
A = Chinese + Math + English
B = []
for i in A:
if i not in B:
B.append(i)
print('选课学生总人数:', len(B))
# 选课学生总人数: 6
# b. 求只选了第一个学科的人的数量和对应的名字
count = 0
for i in Chinese:
if i not in Math and i not in English:
print(i)
count += 1
print('只选了第一个学科的人数:', count)
# 小红
# 只选了第一个学科的人数: 1
# c. 求只选了一门学科的学生的数量和对应的名字
B = []
for i in A:
if A.count(i) == 1 and i not in B:
print(i)
B.append(i)
print('只选了一门学科的学生人数:', len(B))
# 小红
# 小强
# 小兰
# 只选了一门学科的学生人数: 3
# d. 求只选了两门学科的学生的数量和对应的名字
B = []
for i in A:
if A.count(i) == 2 and i not in B:
print(i)
B.append(i)
print('只选了两门学科的学生人数:', len(B))
# 小刚
# 小花
# 只选了两门学科的学生人数: 2
# e. 求选了三门学生的学生的数量和对应的名字
B = []
for i in A:
if A.count(i) == 3 and i not in B:
print(i)
B.append(i)
print('选了三门学科的学生人数:', len(B))
# 小明
# 选了三门学科的学生人数: 1