1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
student = {'name': '小明', 'age': 23, 'grade': 88, 'phone': '12345678901', 'gender': 'male'}
print(student)
2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
g.删除性别不明的所有学生
students = [
{'name': '小明', 'age': 17, 'grade': 68, 'phone': '12345678901', 'gender': 'male'},
{'name': '小红', 'age': 23, 'grade': 52, 'phone': '12349578378', 'gender': 'female'},
{'name': '小娜', 'age': 15, 'grade': 79, 'phone': '12349938483', 'gender': 'female'},
{'name': '李四', 'age': 16, 'grade': 82, 'phone': '12393884938', 'gender': 'male'},
{'name': '王二', 'age': 24, 'grade': 57, 'phone': '12304849338', 'gender': '不明'},
{'name': '多弗朗', 'age': 24, 'grade': 90, 'phone': '12393840933', 'gender': 'male'}
]
count_grade = 0
count_age = 0
str_1 = ''
temp_grade = 0
temp_name = ''
list_grade = []
list_index = 0
for student in students:
if student['grade'] < 60:
count_grade += 1
print(student['name'], student['grade'], end=" ")
if student['age'] < 18:
count_age += 1
if student['phone'][-1] == '8':
p8_n = ' ' + student['name']
str_1 += p8_n
if student['grade'] > temp_grade:
temp_grade = student['grade']
temp_name = student['name']
list_grade.append(student['grade'])
for i in range(len(list_grade)-1):
for j in range(i+1, len(list_grade)):
if list_grade[i] < list_grade[j]:
list_grade[i], list_grade[j] = list_grade[j], list_grade[i]
students[i], students[j] = students[j], students[i]
print('不及格的人数有{}人'.format(count_grade))
print('未成年学生有{}人'.format(count_age))
print('手机尾号是8的学生有{}'.format(str_1))
print('最高分为{}的{}分'.format(temp_name, temp_grade))
# print(list_grade)
print('列表按学生成绩从大到小排序:', students)
for gend in students:
if gend['gender'] == '不明':
gend.clear()
print('删除性别不明的所有学生:', students)
=======================================================================================
小红 52 王二 57 不及格的人数有2人
未成年学生有3人
手机尾号是8的学生有 小红 李四 王二
最高分为多弗朗的90分
列表按学生成绩从大到小排序: [{'name': '多弗朗', 'age': 24, 'grade': 90, 'phone': '12393840933', 'gender': 'male'}, {'name': '李四', 'age': 16, 'grade': 82, 'phone': '12393884938', 'gender': 'male'}, {'name': '小娜', 'age': 15, 'grade': 79, 'phone': '12349938483', 'gender': 'female'}, {'name': '小明', 'age': 17, 'grade': 68, 'phone': '12345678901', 'gender': 'male'}, {'name': '王二', 'age': 24, 'grade': 57, 'phone': '12304849338', 'gender': '不明'}, {'name': '小红', 'age': 23, 'grade': 52, 'phone': '12349578378', 'gender': 'female'}]
删除性别不明的所有学生: [{'name': '多弗朗', 'age': 24, 'grade': 90, 'phone': '12393840933', 'gender': 'male'}, {'name': '李四', 'age': 16, 'grade': 82, 'phone': '12393884938', 'gender': 'male'}, {'name': '小娜', 'age': 15, 'grade': 79, 'phone': '12349938483', 'gender': 'female'}, {'name': '小明', 'age': 17, 'grade': 68, 'phone': '12345678901', 'gender': 'male'}, {}, {'name': '小红', 'age': 23, 'grade': 52, 'phone': '12349578378', 'gender': 'female'}]
[Finished in 0.2s]
3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字
list_course1 = []
list_course2 = []
list_course3 = []
chinese_count = 0
c_count = 0
d_count = 0
e_count = 0
course = {
'chinese': ['路飞', '索隆', '多弗朗明哥', '山治', '鹰眼', '红发', '艾斯'],
'math': ['艾斯', '鹰眼', '凯多', '红发', '多弗朗明哥', '罗杰', '雷利'],
'english': ['孙悟空', '贝吉塔', '比鲁斯', '艾斯', '红发', '全王', '弗利沙']
}
for name in course:
list_course1.extend(course[name])
print('选课学生总共有{}人'.format(len(set(list_course1))))
for first_course in course['chinese']:
if (first_course not in course['math']) and (first_course not in course['english']):
chinese_count += 1
print(first_course, end=' ')
print('只选了第一个学科的人的数量有{}人'.format(chinese_count))
for name_count in list_course1:
i = list_course1.count(name_count)
if i == 1:
c_count += 1
print(name_count, end=" ")
print('只选了一门学科的学生有{}人'.format(c_count))
for name_count in list_course1:
j = list_course1.count(name_count)
if j == 2:
d_count += 0.5
list_course2.append(name_count)
new_name = set(list_course2)
for name in new_name:
print(name, end=" ")
print('只选了两门学科的学生有{}人'.format(d_count))
for name_count in list_course1:
k = list_course1.count(name_count)
if k == 3:
e_count += 1/3
list_course3.append(name_count)
new_name2 = set(list_course3)
for name in new_name2:
print(name, end=" ")
print('选了三门学科的学生有{}人'.format(round(e_count)))
====================================================================================
选课学生总共有15人
路飞 索隆 山治 只选了第一个学科的人的数量有3人
路飞 索隆 山治 凯多 罗杰 雷利 孙悟空 贝吉塔 比鲁斯 全王 弗利沙 只选了一门学科的学生有11人
多弗朗明哥 鹰眼 只选了两门学科的学生有2.0人
艾斯 红发 选了三门学科的学生有2人
[Finished in 0.2s]