- 声明一个字典保存一个学生的信息,学生信息中包括:姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
student = {'name':'zhangsan','age':20,'grade':85,'tel':'13927487648','gender':'female'}
print(student)
- 声明一个列表,在列表中保存多个学生的信息
students = [
{'name': 'zhangsan', 'age': 20, 'grade': 85, 'tel': '13927487648', 'gender': 'female'},
{'name': 'jack', 'age': 17, 'grade': 96, 'tel': '13923456654', 'gender': 'male'},
{'name': 'ross', 'age': 23, 'grade': 77, 'tel': '13923678678', 'gender': 'female'},
{'name': 'lisi', 'age': 15, 'grade': 58, 'tel': '13926558764', 'gender': 'unknown'},
{'name': 'wangwu', 'age': 19, 'grade': 78, 'tel': '13926787864', 'gender': 'unknown'},
{'name': '李白', 'age': 23, 'grade': 96, 'tel': '13927434556', 'gender': 'male'},
{'name': '露娜', 'age': 22, 'grade': 48, 'tel': '13927412348', 'gender': 'female'},
{'name': '火舞', 'age': 17, 'grade': 95, 'tel': '13927413333', 'gender': 'unknown'},
]
(1) 统计不及格学生的个数
(2)打印不及格学生的名字和对应的成绩
(3)统计未成年学生的个数
(4)打印手机尾号是8的学生的名字
(5)打印最高分和对应的学生的名字
(6)删除性别不明的所有学生(这个地方有个坑,挑不出来的话大家可以在群里套路,或者等老师的解答)
(7)将列表按学生成绩从大到小排序
python程序
# (1) 统计不及格学生的个数
# (3)统计未成年学生的个数
count = 0 # 不及格学生个数计数
teen_count = 0 # 未成年个数计数
for student in students:
if student['grade'] < 60:
count += 1
if student['age'] < 18:
teen_count += 1
print('不及格的学生有%d个' % count)
print('未成年的学生有{}个'.format(teen_count))
# (2)打印不及格学生的名字和对应的成绩
for student in students:
if student['grade'] < 60:
print('%s不及格,成绩是%d' % (student['name'], student['grade']))
# (4)打印手机尾号是8的学生的名字
# 方法一
for student in students:
if student['tel'].endswith('8'): # 使用字符串的endwith()方法
print('%s的手机尾号是8' % student['name'])
print('--------------------------------------------')
# 方法二
for student in students:
if student['tel'][-1] == '8':
print('%s的手机尾号是8' % student['name'])
# (5)打印最高分和对应的学生的名字
# 先找出最高分,再找出最高分对应的学生
max_grade = 0 # 存储最高分
for student in students:
if student['grade'] > max_grade:
max_grade = student['grade']
print('最高分是%d' % max_grade)
for student in students:
if student['grade'] == max_grade:
print('%s是最高分' % student['name'])
# (6)删除性别不明的所有学生(这个地方有个坑,挑不出来的话大家可以在群里套路,或者等老师的解答)
# 方法一
new_students = [student for student in students if student['gender'] != 'unknown']
print(new_students)
# 方法二
new_students = [] #创建空列表存储不是'unknown'的元素,反向思考
for student in students:
if student['gender'] != 'unknown':
new_students.append(student)
print(new_students)
# 方法三
i = 0
while i < len(students):
if students[i]['gender'] == 'unknown':
del students[i] #删除列表元素会使列表长度减一
i -= 1 #减一防止相邻的元素被跳过
i += 1
print(students)
# (7)将列表按学生成绩从大到小排序
for i in range(len(students)):
for index in range(len(students) - 1 - i):
if students[index]['grade'] < students[index + 1]['grade']:
students[index], students[index + 1] = students[index + 1], students[index]
print(students)
加油!