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

6-3的任务为什么不能在if-elif-else中再嵌套一个if-elif-else这样的判断?

def __cmp__(self, s):
        if self.score>s.score:
            return -1
        elif self.score<s.score:
            return 1
        elif self.name<s.name:

           return -1

        elif self.nae>s.name:

            return 1

        else:

            return 0

以上是通过的代码,我不能理解的是:

明明是写成

if self.score>s.score:

    return -1

elif self.score<s.score:

    return 1

else:

    if self.name>s.name:

        return -1

    elif self.name<s.name

        return 1

     else:

            return 0

 这样的逻辑也是正确的为什么不能通过


正在回答

4 回答

最后一个return缩进不对吧

if self.score>s.score:

    return -1

elif self.score<s.score:

    return 1

else:

    if self.name>s.name:

        return -1

    elif self.name<s.name

        return 1

     else:

        return 0


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

王小累 提问者

这里贴代码的时候是直接手打,所以可能缩进有问题,但是我在代码编译器上写入的代码缩进是没问题的
2017-05-08 回复 有任何疑惑可以回复我~
#2

Danmomo 回复 王小累 提问者

else:if就是elif的用法,因为else:后面跟条件或者表达式而不是继续一个if:所以你就报错了
2017-05-08 回复 有任何疑惑可以回复我~
#3

王小累 提问者 回复 Danmomo

恩恩明白了!谢!
2017-05-08 回复 有任何疑惑可以回复我~

楼上说的对,我也是楼上那样写的,可以运行出正确结果,题目要求分数相同时按名字升序排列,所以小于的时候应该是return -1

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

上面的说的不对,楼主的写法是可以的,只不过不那么简洁,报错的原因是逻辑错误,看我加粗的地方:

if self.score>s.score:

    return -1

elif self.score<s.score:

    return 1

else:

    if self.name<s.name:

        return -1

    elif self.name>s.name

        return 1

    else:

         return 0

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

if expression1:
  statement(s)
  if expression2:
     statement(s)
  elif expression3:
     statement(s)
  else
     statement(s)
elif expression4:
  statement(s)
else:
  statement(s)


这才是if嵌套的正确用法

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

举报

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

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

进入课程

6-3的任务为什么不能在if-elif-else中再嵌套一个if-elif-else这样的判断?

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