6

この単純なif...elseステートメントを作成しているときに、Pythonのインタープリターから無効な構文エラーが発生する理由を誰かが説明できますか?自分でタブを追加することはありません。テキストを入力し、入力後にEnterキーを押すだけです。「else:」の後にEnterキーを入力すると、エラーが発生します。「Else」は通訳によって強調表示されます。どうしたの?

Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48)
[MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.

>>> if 3 > 0:
        print("3 greater than 0")
        else:

SyntaxError: invalid syntax
>>>
4

7 に答える 7

9

Pythonは、他の多くの言語とは異なり、空のブロックを許可しません(ブロックを示すために中括弧を使用しないため)。このpassキーワードは、空のブロックが必要な場合はいつでも使用する必要があります(if / elseステートメントおよびメソッドを含む)。

例えば、

if 3 > 0:
    print('3 greater then 0')
else:
    pass

または空のメソッド:

def doNothing():
    pass
于 2013-01-14T21:47:01.517 に答える
8

これは、elseパーツが空であり、。で適切にインデントされていないためifです。

if 3 > 0:
    print "voila"
else:    
    pass

Pythonでは、Cなどの他の言語で使用されるpassものと同等です。{}

于 2013-01-14T21:40:52.097 に答える
4

ブロックは、 :elseと同じインデントレベルである必要があります。if

if 3 > 0:
    print('3 greater then 0')
else:
    print('3 less than or equal to 0')
于 2013-01-14T21:41:10.847 に答える
4

キーワードは、ステートメントelseに対してそれぞれインデントする必要がありますif

例えば

a = 2
if a == 2:
    print "a=%d", % a
else:
    print "mismatched"
于 2013-07-22T05:59:19.580 に答える
1

クリックして画像を開きます

問題はインデントのみです。

IDLEを使用しています。elseの最初のprintステートメントのインデントの後にEnterキーを押すと、デフォルトでprintと同じになりますが、これはOKではありません。else文の先頭に移動し、1回押す必要があります。添付の画像で私が言っていることを確認してください。

于 2016-04-18T18:22:40.173 に答える
0

それは明らかな間違いです。ifステートメントの後にEnterキーを押すと、その意図になります。elseステートメントをifステートメントと同じようにまっすぐにしてみてください。これは一般的な誤植です。

于 2017-01-25T15:40:34.467 に答える
0

それ以外の場合は、垂直方向に揃える必要があります。Pythonではインデントが重要な役割を果たしています。elseを使用しているときに同じ構文エラーが発生していました。コードを正しくインデントするようにしてください

于 2019-03-03T05:19:02.267 に答える