-1

私は Python の if 文に行き詰まっています。私はほとんどすべてを終えましたが、プログラムを実行すると、最初の行で構文エラーが発生します。すべてを正しく行ったと確信していますが、Python とプログラミングはまったく初めてなので、非常にばかげた間違い...みんなを助けてくれてありがとう!

if a == 2:   
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]
4

3 に答える 3

9

これが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早い方を取得します。しかし、もちろん、まだ有用なほど早くはありません。

于 2013-11-01T23:18:10.480 に答える
3

表示されているエラーを投稿する必要がありますが、必要なのは if ステートメントの後のインデントだけだと思います

if a == 2:   
    StartDeckNeighbourright = StartDeck[a + 1]
    StartDeckNeighbourright2 = StartDeck[a + 2]
---- four spaces of indentation
于 2013-11-01T23:04:48.133 に答える
0

Python では、インデントを使用する必要があります。

if a == 2:
    StartDeckNeighbourright = StartDeck[a + 1]
    StartDeckNeighbourright2 = StartDeck[a + 2]
于 2013-11-01T23:08:37.760 に答える