统计考试成绩

统计考试成绩,代码清单如下:

#!/usr/bin/env Python
# -*- coding: UTF-8 -*-

#查询平均成绩
def avg_score(sc):
#avg_sc = sum(sc.values())/len(sc)
return sum(sc.values())/len(sc)

#成绩从高到低排序
def order_score(sc):
lst = [(sc[k],k) for k in sc]
new_lst=sorted(lst,reverse=True)
return [(i[1],i[0]) for i in new_lst]

#查询成绩最高的学生和成绩
def max_score(sc):
lst = order_score(sc)
max_sc = lst[0][1]
return [(i[0],i[1])for i in lst if i[1] == max_sc] #写法1
return [(k,sc[k])for k in sc if sc[k] == max_sc] #写法2
return [(k,v)for k,v in sc.items() if v == max_sc] #写法3

#查询成绩最差的学生和成绩
def min_score(sc):
lst = order_score(sc)
min_sc = lst[len(lst)-1][1]
return [(i[0],i[1]) for i in lst if i[1] == min_sc] #写法1
return [(k,sc[k])for k in sc if sc[k] == min_sc] #写法2
return [(k,v)for k,v in sc.items() if v == min_sc] #写法3

#测试脚本
if __name__ == '__main__':
sc = {'Bital':85, 'Martin':92, 'Leeli':78}

print '考试成绩单为:',sc

#avg_sc = sum(sc.values())/len(sc) #可以调用函数,也可以直接计算
avg_sc = avg_score(sc)
print '平均成绩为:',avg_sc

order_sc = order_score(sc)
print '成绩从高到低依次排名为:',order_sc

max_sc = max_score(sc)
print '成绩最高的学生和成绩为:',max_sc

min_sc = min_score(sc)
print '成绩最差的学生和成绩为:',min_sc

考试成绩单为: {'Martin': 92, 'Leeli': 78, 'Bital': 85}
平均成绩为: 85
成绩从高到低依次排名为: [('Martin', 92), ('Bital', 85), ('Leeli', 78)]
成绩最高的学生和成绩为: [('Martin', 92)]
成绩最差的学生和成绩为: [('Leeli', 78)]


你可能感兴趣的:(python动手实验)