2012-03-06 33 views
-2

は私が間違っているかわからない中央値を計算したいここ がUPDATE:文にSyntaxError場合:無効な構文

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 ^ インデントエラー:インデントブロックがあると予想されます。

+1

あなたのインデントが非常に悪いです。あなたはそれを一貫させるべきです。 – Interrobang

答えて

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] 
+0

スペースは重要ですか?それ以外の場合はそれぞれそれの下にあるはずですか? –

+0

@NeginNicki:はい、はい。 – NPE

+0

私はまだ問題がありますか?私のコードを更新しました –

1

あなたがライン上で非インデントelse文Pythonで5空白事項にする必要があります。

1

elseにはifと同じ字下げが必要です。 Pythonはブロックの開始と終了の場所を知っています。

0

行5のelse:は、行3のif:と一致するようインデントされていません。Pythonは、空白に敏感な言語です。

0

この

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

はあまり効率的であるかもしれないが、少し簡単に理解すること。

0

"return b"が "return c"よりもインデントされている様子は見えますか?それを修正すればうまくいくはずです。

関連する問題