为了账号安全,请及时绑定邮箱和手机立即绑定

这段代码看不懂,有人能解释一下吗 谢谢

 def __cmp__(self, s):
        if self.score == s.score:
            return cmp(self.name, s.name)
        return -cmp(self.score, s.score)


正在回答

3 回答

首先会判断分数是否相等,相等的话就根据name的首字母进行默认的排序,然后继续根据分数进行从高到低排序,cmp默认是按从小到大排序的,但是前面加了-cmp就会倒过来进行从高到低排序,这里的return -cmp(self.score, s.score)不是在分数不相等的情况下才执行的和如下写法是不同的一个是顺序执行一个是多选1执行的https://img1.sycdn.imooc.com//5b07b58e0001f3ab04800219.jpg

0 回复 有任何疑惑可以回复我~
#1

本质学习者

这样就可以 def __cmp__(self, s): if self.score != s.score: return -cmp(self.score, s.score) else: return cmp(self.name, s.name)
2018-05-25 回复 有任何疑惑可以回复我~

如果分数相等,比较名字,名字一样说明都一样,不然就比较分数

0 回复 有任何疑惑可以回复我~

调用默认的cmp方法进行比较,如果分数相等,比较名字,不相等比较分数

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

这段代码看不懂,有人能解释一下吗 谢谢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信