Loading

python字典练习01


  1. 声明一个字典保存一个学生的信息,学生信息中包括:姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
student = {'name':'zhangsan','age':20,'grade':85,'tel':'13927487648','gender':'female'}
print(student)
  1. 声明一个列表,在列表中保存多个学生的信息
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)

加油!

posted @ 2020-10-25 15:55  紫曜花  阅读(1237)  评论(0编辑  收藏  举报