2016-07-23 29 views
0

私は絶対に私の髪を引き出しています。この関数のif/elif文は、elif行に構文エラーを投げます。私には明らかな構文上の問題はありません。Python if/elif構文エラー... WHY

"elif n == cs_index:" 
    ^
SyntaxError: invalid syntax 

私は「他:」熊にそれを切り替えてみましたそれは愚かだろう言葉とそれがなかった場合だけ見るために。私には見えないものがあると確信しています。

def higherhighlight(cs_index): 
    text.tag_remove("the hello","1.0", END) 
    idex = "1.0" 
    for n in range(cs_index): 
     if n < cs_index: 
      idex = text.search("Hello", idex, nocase=1, stopindex=END) 
      lastidex = idex+"+"+str(len("hello"))+"c" 
      idex = lastidex 
     elif n == cs_index: 
      idex = text.search("Hello", idex, nocase=1, stopindex=END) 
      print idex 
      lastidex = idex+"+"+str(len("hello"))+"c" 
      print lastidex 
      text.tag_remove("hellos", idex, lastidex) 
      text.tag_add("the hello", idex, lastidex) 
    text.tag_config("the hello", background="dark green") 
+4

コードが正しくインデントされていることを確認しましたか? – tjohnson

+2

IDEにコードを貼り付けた後に構文エラーはありません。あなたのインデントでなければなりません。 –

+0

おそらくタブとスペースを混在させましたか? – cdarke

答えて

1

は私のスパイダーのIDEに私のコードを貼り付けて、それを実行した後、私はエラーを示さない(print文で行方不明括弧から離れて - あなたは本当にPythonの3.5.2にアップグレードする必要があります!)

てみてくださいインデントをリセットし、3つのタブを追加して、その行を再インデントします。インデント用にスペースを使用するコードをコピー&ペーストすると、同様のエラーが発生します。

1

コード内にタブとスペースを混在させています。その後、私はこれを参照してくださいすべての行を選択し、あなたの最初の記事のソースを取り、崇高テキストに貼り付ける:灰色の線は、タブです

source code with spaces and tabs

を、ドットはスペースがあります。私はタブを4列目ごとに展開するように設定していますが、おそらく同じ設定があります。これらの4つのスペースを、次のタブ文字が展開されているのでelifインデントは、前の行と一致するか

same source with tabs set to 8 spaces

注:すべての第八列にタブを展開し

Pythonは、この見ています最初に 8番目の列ではなく、1番目の列です。これが例外の原因です。

タブとスペースを混用しないでください。好ましくは、くぼみのために空間にくっつく。;それは何ですか。Python styleguide recommends

スペースは、好ましいインデント方法です。

タブは、既にタブでインデントされているコードとの一貫性を保つために使用する必要があります。

スペースを使用するようにエディタを設定してくださいTABキーを使用することはできますが、エディタでは行をインデントするためにスペースを使用します。