练习 : 数据类型之字典

1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)

student1 = {'name': '张三', 'age': 20, 'grade': 80, 'tel': '13888888888', 'gender': '男'}

2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)

students = [
    {'name': '无名', 'age': 12, 'grade': 60, 'tel': '13888888881', 'gender': '男'},
    {'name': '掩日', 'age': 22, 'grade': 59, 'tel': '13888888882', 'gender': '不明'},
    {'name': '惊鲵', 'age': 15, 'grade': 93, 'tel': '13888888883', 'gender': '不明'},
    {'name': '胜七', 'age': 21, 'grade': 45, 'tel': '13888888888', 'gender': '男'},
    {'name': '卫庄', 'age': 28, 'grade': 85, 'tel': '13888888885', 'gender': '男'},
    {'name': '盖聂', 'age': 29, 'grade': 80, 'tel': '13888888886', 'gender': '男'}]
# a.统计不及格学生的个数
# b.打印不及格学生的名字和对应的成绩
count1 = 0
for student1 in students:
    if student1['grade'] < 60:
        count1 += 1
        print(student1['name'], student1['grade'])
print('不及格的学生个数为:',count1)

# c.统计未成年学生的个数
count2 = 0
for student2 in students:
    if student2['age'] < 18:
        count2 += 1
print('未成年的学生个数为:',count2)

# d.打印手机尾号是8的学生的名字
for student3 in students:
    if list(student3['tel'])[-1] == '8':
        print(student3['name'])

# e.打印最高分和对应的学生的名字
max_grade = students[0]
for student4 in students:
    if student4['grade'] > max_grade['grade']:
        max_grade = student4
print(max_grade['name'], max_grade['grade'])

# f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)


# g.删除性别不明的所有学生
students2 = students[:]
for index1 in range(len(students2)):
    if students2[index1]['gender'] == '不明':
        del students[index1]
print(students)

3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)

china = {'月儿', '少羽', '天明', '石兰', '扶苏'}
math = {'端木蓉', '高渐离', '石兰','雪女'}
english = {'月儿', '天明','石兰','端木蓉', '白凤'}

# a. 求选课学生总共有多少人
count3 = 0
for name1 in (china | math | english):
    count3 += 1
print(count3)

# b. 求只选了第一个学科的人的数量和对应的名字
只选了语文的
count4 = 0
for name2 in (china - (math | english)):
    count4 += 1
    print(name2)
print('只选了第一个学科的学生的个数:', count4)

# c. 求只选了一门学科的学生的数量和对应的名字
count4 = 0
count5 = 0
count6 = 0
for name2 in (china - (math | english)):
    count4 += 1
    print(name2)
for name3 in (math - (china | english)):
    count5 += 1
    print(name3)
# print('只选了数学的学生的个数:', count5)
for name4 in (english - (china | math)):
    count6 += 1
    print(name4)
# print('只选了英语的学生的个数:', count6)
print('只选了一个学科的学生的个数:', count4+count5+count6)

# d. 求只选了两门学科的学生的数量和对应的名字
count7 = 0
set2 = ((china & math) | (china & english) | (math & english)) - (china&math&english)
for name5 in set2:
    count7 += 1
    print(name5)
print('只选了两门学科的学生有:', count7)

# e. 求选了三门学生的学生的数量和对应的名字
count8 = 0
for name6 in (china&math&english):
    count8 += 1
    print(name6)
print('选了三门学科的学生有:', count8)
posted @ 2019-11-19 21:40  anjhon_木  阅读(285)  评论(0编辑  收藏  举报