python成绩按课程排序_Python学习记录(一)

本文记录了作者在Python初级培训班中遇到的成绩排序问题及其解决过程。通过实例,作者详细描述了如何处理字符串类型的分数并正确使用sort()函数及lambda表达式进行排序,最终解决问题并学到新的编程技巧。
摘要由CSDN通过智能技术生成

作为一个信息技术老师,为了迎接浙江19年的新教材,得从零开始学Python了,所以准备写一点我遇到的问题或者一些学习的轨迹,方便以后查阅,或者有可能也帮助一些新学习Python的人。

对于编程我并不是初学者了,因为大学学过C,JAVA,html,as3.0,C#,以及在教学过程中学习的VB,但是都坚持的不长,略懂一些简单的算法,在教学中也够用了。

日前参加了一个Python的初级培训班,在练习基础的Python题目时,遇到了一个困扰我一天的问题,问题如下:

成绩排序

题目描述:

给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。

输入格式:

第一行为n (0 < n < 20),表示班里的学生数目;

接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。

输出格式:

把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。

样例输入:

4

Kitty 80

Hanmeimei 90

Joey 92

Tim 28

样例输出:

Joey 92

Hanmeimei 90

Kitty 80

Tim 28

起初拿到题目,觉得很简单,用字典存,然后排序不就好了么?后来发现,我连字典排序都不会,好吧,那我用列表存吧。

读取数据部分比较简单,因为之前写过好多次了,终于记住了:

n = eval(input())

info=[]

for i in range(n):

info.append(input().split())

只会sort()或者sort(reverse=True),发现解决不了,于是上网找了好多资料,由于理解能力有限,一直不能AC,直找到并使用了高级sort:

info.sort(key=lambda x:(x[0]))

info.sort(key=lambda x:(x[1]),reverse=True)

发现能有4个能AC,6个不能,又开始各种修改,以为语句不对。到后来才发现,原来是数值类型错了,成绩读取的时候是字符串类型,样例给的数据,排序没问题,但是遇到10分和9分的时候就会出错,于是改成:

info.sort(key=lambda x:(x[0]))

info.sort(key=lambda x:(int(x[1])),reverse=True)

终于AC,后来询问老师的时候得到了更简单的写法:

info.sort(key=lambda x:(-int(x[1]),x[0]))

这个困扰一天的问题终于解决了,学会了sort(key=)的用法,对数字进行排序的时候要格外注意类型,对lambda函数有了一个概念。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值