如果语句SyntaxError:语法无效

时间:2012-03-06 20:36:53

标签: python

我想计算中位数我不知道这里有什么问题 UPDATE:

def median(a,b,c):
    if a>b:
        if b>c:
        return b
        else:
        if a>c:
            return c
        else:
            return a
    else:
        if b<c:
            return b
        else:
        if a>c:
            return a
        else: 
            return c

我的错误是:文件“prog.py”,第4行     返回b          ^ IndentationError:预期缩进块

6 个答案:

答案 0 :(得分:6)

你的缩进是错误的。每个else:必须与其对应的if ...:对齐,并且每个嵌套块必须缩进。

例如,

        if a>c:
            return c
                else:
                    return a

应该阅读

        if a>c:
            return c
        else:
            return a

没有正确缩进的代码不是有效的Python。

P.S。整个功能可以重写如下:

def median(a, b, c):
    return sorted((a, b, c))[1]

答案 1 :(得分:1)

你需要在第5行取消缩进else语句。空格在Python中很重要。

答案 2 :(得分:1)

您的else需要与if具有相同的缩进。这就是python如何知道块开始和结束的位置。

答案 3 :(得分:0)

第5行的else:没有缩进以匹配第3行的if: .Python是一种对空格敏感的语言。

答案 4 :(得分:0)

def median(a,b,c):
  lst = [a, b, c]
  lst.sort()
  return lst[1]

可能效率较低,但更容易理解。

答案 5 :(得分:0)

你看到“返回b”的缩进程度是否小于“返回c”?修复它,它应该工作。