1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话
student_info = {
'name': '艾希',
'age': 16,
'grade': 90,
'tel': '911'
}
2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
stu_info = [{
'name': '泰达米尔',
'age': 28,
'grade': 20,
'tel': '818'
}, {'name': '拉克丝',
'age': 17,
'grade':60,
'tel': '717'
}, {'name': '盖伦',
'age': 30,
'grade': 50,
'tel': '615'
}, {'name': '伊泽瑞尔',
'age': 16,
'grade': 100,
'tel': '518'
}, {'name': '赵信',
'age': 46,
'grade': 40,
'tel': '413'
}, {'name': '嘉文四世',
'age': 32,
'grade': 95,
'tel': '311'
}
]
a.统计不及格学生的个数
count1 = 0
for student in stu_info:
if student['grade'] < 60:
count1 += 1
print('不及格学生有:', count1, '个', sep='')
b.打印不及格学生的名字和对应的成绩
for student in stu_info:
if student['grade'] < 60:
print(student['name'], ':', student['grade'], '分', sep='')
c.统计未成年学生的个数
count2 = 0
for student in stu_info:
if student['age'] < 18:
count2 += 1
print('未成年学生有:', count2, '个', sep='')
d.打印手机尾号是8的学生的名字
for student in stu_info:
if student['tel'][-1] == '8':
print(student['name'])
e.打印最高分和对应的学生的名字
max_score = 0
for student in stu_info:
score = student['grade']
if score > max_score:
max_score = score
print('最高分是:%s\n有:' % max_score, end='')
for student in stu_info:
if student['grade'] == max_score:
print(student['name'])
f.将列表按学生成绩从大到小排序
stu_info.sort(reverse=True, key=lambda item: item['grade'])
print(stu_info)
###############################################################
length = len(stu_info)
for i in range(length - 1):
for j in range(i + 1, length):
if stu_info[j]['grade'] > stu_info[i]['grade']:
stu_info[j], stu_info[i] = stu_info[i], stu_info[j]
print(stu_info)
###############################################################
length = len(stu_info)
for x in range(length - 1):
for i in range(length - x - 1):
j = i + 1
if stu_info[j]['grade'] > stu_info[i]['grade']:
stu_info[j], stu_info[i] = stu_info[i], stu_info[j]
print(stu_info)
3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
stu_python = ['贾宝玉', '林黛玉', '史湘云', '薛宝钗', '沙悟净', '宋江']
stu_java = ['林黛玉', '沙悟净', '猪悟能', '史进', '孙权', '太史慈']
stu_php = ['贾宝玉', '林黛玉', '史进', '诸葛亮', '沙悟净', '太史慈']
a. 求选课学生总共有多少人
set1 = set(stu_python) | set(stu_java) | set(stu_php)
num = 0
for student in set1:
num += 1
print('共有选课学生%s个' % num)
b. 求只选了第一个学科的人的数量和对应的名字
set2 = set(stu_python) - (set(stu_java) | set(stu_php))
num = 0
for student in set2:
num += 1
print('只选了python的学生共有%s个,是:' % num, set2)
c. 求只选了一门学科的学生的数量和对应的名字
set3 = set(stu_python) - (set(stu_java) | set(stu_php))
set4 = set(stu_java) - (set(stu_python) | set(stu_php))
set5 = set(stu_php) - (set(stu_python) | set(stu_java))
num = 0
set6 = set3 | set4 | set5
for student in set6:
num += 1
print('只选了一门课的学生共有%s个,是:' % num, set6)
d. 求只选了两门学科的学生的数量和对应的名字
set7 = set(stu_java) & set(stu_php) - set(stu_python)
set8 = set(stu_python) & set(stu_php) - set(stu_java)
set9 = set(stu_python) & set(stu_java) - set(stu_php)
num = 0
set10 = set7 | set8 | set9
for student in set10:
num += 1
print('只选了两门课的学生共有%s个,是:' % num, set10)
e. 求选了三门学生的学生的数量和对应的名字
set11 = set(stu_java) & set(stu_php) & set(stu_python)
num = 0
for student in set11:
num += 1
print('选了三门课的学生共有%s个,是:' % num, set11)