1. 声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话
student_dict = {'name': '香蕉君', 'age': 18, 'score': 100, 'telephone': 9090999}
2. 声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
student_list = [{'name': '香蕉君', 'age': 18, 'score': 96, 'telephone': '9090999'},
{'name': '苹果君', 'age': 16, 'score': 49, 'telephone': '8080888'},
{'name': '梨子君', 'age': 17, 'score': 98, 'telephone': '7070777'},
{'name': '西瓜君', 'age': 21, 'score': 57, 'telephone': '6060666'},
{'name': '菠萝君', 'age': 17, 'score': 96, 'telephone': '5050555'},
{'name': '芒果君', 'age': 23, 'score': 55, 'telephone': '4040444'},
]
# a.统计不及格学生的个数
count = 0
for stu in student_list:
if stu['score'] < 60:
count += 1
print('a.不及格学生的个数:', count)
# b.打印不及格学生的名字和对应的成绩
for stu in student_list:
if stu['score'] < 60:
print('b.%s不及格,成绩为%d'%(stu['name'], stu['score']))
# c.统计未成年学生的个数
count1 = 0
for stu in student_list:
if stu['age'] < 18:
count1 += 1
print('c.未成年学生的个数为:', count1)
# d.打印手机尾号是8的学生的名字
for stu in student_list:
if stu['telephone'][-1] == '8':
print('d.手机尾号是8的学生的名字', stu['name'])
# e.打印最高分和对应的学生的名字
max_score = student_list[0]['score']
index = -1
score_list = []
for stu in student_list:
score_list.append(stu['score'])
for stu in student_list:
index += 1
if max(score_list) == stu['score']:
print('e.最高分%d和对应的学生的名字是:%s'%(max(score_list), student_list[index]['name']))
break
# f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
score_list1 = []
for stu in student_list:
score_list1.append(stu['score'])
score_list1.sort(reverse=True)
score_number_list = []
index = 0
temp = True
while temp:
max_score = score_list1[index]
for stu in student_list:
if stu['score'] == max_score:
score_number_list.append(stu)
index += 1
if len(score_number_list) == len(student_list):
temp = False
print('f.列表按学生成绩从大到小排序为:', score_number_list)
3. 用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字
# a. 求选课学生总共有多少人
math_list = ['张三', '李四', '王五', '刘八']
chinese_list = ['张三', '李四', '王五', '小明']
english_list = ['李四', '王五', '小明', '小红']
all_list1 = [math_list, chinese_list, english_list]
all_list = math_list + chinese_list + english_list
print('a.选课学生总共有%d人:' % len(set(all_list)))
# b. 求只选了第一个学科的人的数量和对应的名字
simple_list1 = []
for stu in math_list:
if stu not in chinese_list and stu not in english_list:
simple_list1.append(stu)
print('b.只选了第一个学科的人的数量为%d和对应的名字分别为:%s' % (len(simple_list1), *simple_list1))
# c. 求只选了一门学科的学生的数量和对应的名字
simple_list = []
for stu in math_list:
if stu not in chinese_list and stu not in english_list:
simple_list.append(stu)
for stu in chinese_list:
if stu not in math_list and stu not in english_list:
simple_list.append(stu)
for stu in english_list:
if stu not in chinese_list and stu not in math_list:
simple_list.append(stu)
"""
注意:这里输出的第二个变量是我在首先用len函数判断出列表长度之后,
才确定的占位符数量,可以灵位写个循环输出姓名或者另外判断再输出,
这里只是为了方便
"""
print('c.只选了一门学科的人的数量为%d,分别是%s,%s' % (len(simple_list), *simple_list))
# d. 求只选了两门学科的学生的数量和对应的名字
all_list = math_list + chinese_list + english_list
temp_2 = []
for name in set(all_list):
if all_list.count(name) == 2:
temp_2.append(name)
"""
注意:这里输出的第二个变量是我在首先用len函数判断出列表长度之后,
才确定的占位符数量,可以灵位写个循环输出姓名或者另外判断再输出,
这里只是为了方便
"""
print('d.只选了两门学科的学生的数量为%d和对应的名字%s,%s' % (len(temp_2), *temp_2))
# e. 求选了三门学生的学生的数量和对应的名字
all_list = math_list + chinese_list + english_list
temp_3 = []
for name in set(all_list):
if all_list.count(name) == 3:
temp_3.append(name)
"""
注意:这里输出的第二个变量是我在首先用len函数判断出列表长度之后,
才确定的占位符数量,可以灵位写个循环输出姓名或者另外判断再输出,
这里只是为了方便本题
"""
print('e.只选了两门学科的学生的数量为%d和对应的名字%s,%s' % (len(temp_3), *temp_3))