2016-03-30 16 views
-4

誰かがこれを明確にすることができますか?このように...複数の変数を持つPythonのIF条件

if tomato = 1 or tomato = 2 or tomato = 3 

if tomato = 1 or 2 or 3 

は、私はPythonはそれ同じことを考えていない知っているが、それは私がやっていると思うん私はこのコードを記述しようとした場合はどうなりますか?

トマトの条件が一揃いの場合は、最も重要なことは、これを行うにはどうすればよいのでしょうか。 "tomato ="と書くたびにきれいに見えません。

答えて

2

Pythonは何も考えていません。構文に何か問題があることを認識し、SyntaxErrorをスローします。

単にあなたがin演算子を使用することができ、一度に多くの値を確認するには:

if tomato in (1, 12, 25, 76, 84): 
    pass 

はまた、あなたが等価性をチェックするために、2つの等号(==)を使用する必要があることに注意してください。

0

二等号を使用していた場合、実行は次のようになります。Pythonは、if文の述語を左から右に評価し始めます。 tomatoの値が1の場合、最初の部分はTrueと評価され、Pythonインタプリタはifブロック内の連続する行を評価し続けます(これはshort-circuit evaluationと呼ばれます)。

ただし、tomatoの値が1でない場合、インタープリタは、値2の整数である述語の次の部分を評価し続けます。ゼロ以外のすべての整数値は、Trueと評価されます。これにより、述語の次の部分がTrueと評価され、インタプリタはブロックifの内容を実行し続けます。したがって、あなたの述語はtautologyであり、tomatoに関係なく常にTrueと評価されます。

pp_で指摘されているように、等号比較のために二等号を使用する必要があります。そうでない場合は代入文とみなされ、Pythonでは代入文に真偽値がないため、通訳者はSyntaxErrorをスローします。

関連する問題