day8作业

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

student={'姓名':'张三','年龄':14,'成绩':89,'电话':2314}
print(student)

2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)

all_student = [
{'name':'张一','age':18,'score':95,'Tel':'4359'},
{'name':'张二','age':19,'score':86,'Tel':'1434'},
{'name':'张三','age':16,'score':41,'Tel':'4355'},
{'name':'张四','age':18,'score':56,'Tel':'1543'},
{'name':'张五','age':20,'score':77,'Tel':'9505'},
{'name':'张六','age':17,'score':89,'Tel':'0845'}
]
count=0#不及格人数
count1=0#未成年人数
for stu in all_student:
    if stu['score']<60:
        print('%s:%d' % (stu['name'],stu['score']))     
        count+=1
    if stu['age']<18:
        count1+=1
    if stu['Tel'][-1]=='8':
        print('%s的电话'%(stu['name'],stu['Tel']))
print('不及格人数:',count)
print('未成年人数:',count)

max_score=0
for stu in all_student:
    if stu['score']>max_score:
        max_score=stu['score']
for stu in all_student:
    if stu['score']==max_score:
        print(stu['name'],max_score)
a=[]
b=[]
for stu in all_student:
    a.append(stu['score'])
a.sort(reverse=True)
for x in a:
    for y in all_student:
        if x==y['score']:
            b.append(y)
print(b)    

3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字

names1 = ['name1', 'name2', 'name3', 'name4', 'name5', 'name6']
names2 = ['name1', 'name2', 'name7', 'name8', 'name9', 'name10']
names3 = ['name2', 'name3', 'name4', 'name7', 'name11', 'name12']

tota = set(names1) | set(names2) | set(names3)
print('选课学生总共有多少人:%d' % len(tota))

total = set(names1) - (set(names2) | set(names3))
print('只选了第一个学科的人的数量:%d,对应的名字:%s' % (len(total), str(total)[1:-1]))
#奇数个补集要多减一个交集
total1 = (set(names1) ^ set(names2) ^ set(names3)) - (set(names1) & set(names2) & set(names3))
print('只选了一门学科的学生的数量:%d, 对应的名字:%s' % (len(total1), str(total1)[1:-1]))

 #所有学生 - 只选了一科的学生 - 选了三科的学生
total2 = tota - total1 - (set(names1) & set(names2) & set(names3))
print('只选了两门学科的学生的数量:%d, 对应的名字:%s' % (len(total2), str(total2)[1:-1]))

total3 = set(names1) & set(names2) & set(names3)
print('选了三门学科的学生的数量:%d, 对应的名字:%s' % (len(total3), str(total3)[1:-1]))

你可能感兴趣的:(day8作业)