python学习--计算学生成绩排名案例(字典篇2) --小黑学习驿站

目录

问题:

额外话题:

zip()函数

 sorted()函数


问题:

创建学生期末成绩自动排名?如何查找对应的学生学习成绩?

思路:

1、 首先总分为未知数,定义学生数量,将语数英各科成绩分开,然后计算总成绩

2、计算出总成绩,然后进行排序

3、然后定义一个判断语句,将各科成绩对应查询

png=int(input('输入学生的数量'))          #定义学生的数量
ke=dict()                             #定义空字典
for i in range(0,png):                  #定义循环添加学生的成绩
    ran=input('学生%d的姓名'%(i+1))
    a=int(input('英语%d成绩'%(i+1)))
    b=int(input('语文%d成绩'%(i+1)))
    f=int(input('数学%d成绩'%(i+1)))
    d=a+b+f                               #单个学生的总成绩
    ke[ran]=d                             #将学生和总成绩录入字典
distl=zip(ke.keys(),ke.values())
c=list(sorted(distl,reverse=True))
print(c)
#zip()将字典转换为元组,然后再排序,如果不用zip,结果将只有分数的数组形式
kk=input('查询学生的成绩')
if kk in ke:
    # print('学生%a英语%b数学%d语文%c总成绩%e'%(ran,a,c,b,d))
    print('学生%s英语%s语文%s数学%s总计%s'%(ran,a,b,f,d))

额外话题:

zip()函数

zip()它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个元组

语法:zip(目标.key(),目标.value())   重新生成

 sorted()函数

语法:
list1=sorted(ke.items(),key=lambda x:x[1],reverse=True)
# 这是按照先小后大的顺序排序,关于sorted函数说明
参数说明:
sorted(iterable,key,reverse)  三个参数,也可以直接将集合放入函数中或ke.sort()
iterable    -- 可迭代的对象,如字典ke
key 用来比较的元素,指定可以迭代的对象中的一个进行排序
reverse     排序规则,reverse=True  降序  reverse False 升序(不写默认升序)
语法说明:
关于lambda函数  这个函数只有唯一语法: lambda A:B  A代表输入参数列表,B代表输出参数表达式,
此处lambda x:x[1]针对的是values进行排序,如果要这对key排序,x[1]变为x[0]即可

猜你喜欢

转载自blog.csdn.net/G_WEB_Xie/article/details/128532255