これがIndentationErrorjramirez の回答の修正ではなく、実際のである場合は、ステートメントの前SyntaxErrorの行に問題がある可能性があります。if
Python では、式が括弧内にある限り、複数の行にわたって式を続けることができます。)そのため、関数呼び出しやタプルなどの末尾で誤って aを省略した場合SyntaxError、次の行で謎のエラーが発生することがよくあります。たとえば、次のコード:
foo = (1, 2
if a == 2:
    pass
…このエラーが発生します:
    if a == 2:
             ^
SyntaxError: invalid syntax
そして、別のコンマを追加するだけで、エラーが別の場所に移動します!
foo = (1, 2,
if a == 2:
    pass
    if a == 2:
     ^
SyntaxError: invalid syntax
なんで?これらのエラーの意味を正確に理解したとしても、あまり役に立ちません。まず、次のことを覚えておいてください。
SyntaxError完全に有効な行で が表示された場合は、上の行で欠落している()または]または}、余分な\、またはその他のいくつかの特殊なケース) を探します。
また、括弧と括弧を一致させるのに役立つエディターを入手できれば、この問題の可能性ははるかに低くなります。(たとえば、emacs では、少なくとも私がセットアップした方法では、if7 行目の文字を自動的にインデントしようとします。それを「修正」すると、私に反撃し、最終的には'何かが間違っていることに気づかないのは難しいでしょう。それから最初のものを指(差すと、比類のないものだと教えてくれます。)
しかし、あなたが知りたいなら、ここに行きます:
最初のバージョンは value でタプルを構築し1、次に value で始まり2、次の行に続きます。は、三項式2 if a == 2の完全に適切な開始点ですが、そうではありません。コロンはそれをステートメントにすることを強制し、ステートメントを式の途中に置くことはできません。if2 if a == 2:if
12 番目のバージョンは、 value 、 value 2、および次の行に続く複数の値でタプルを構築します。ifを有効な式の開始にすることはできないため、SyntaxError早い方を取得します。しかし、もちろん、まだ有用なほど早くはありません。