1

私は今本当に混乱しています、私のプログラムの思考モデルでは、あなたがこれらのような表現に出会った場合

expr=expr1およびexpr2

これは、exprの型がブール値でなければならないことを意味します。'または'操作と同じです。

以下のコードを参照してください。3行でブール値が出力されると仮定します。

print(1==1 and 3)
print(1==2 and 3)
print(1==2 and 3 or 4)

しかし、結果は

3
False
4

私は基本的なプログラミングを再検討する必要があります:

and and or'e1 and e2'の真の意味は、結果がFalseの場合はe1を評価することを意味します。

私はそれを正しく理解しますか?

4

3 に答える 3

5

この動作は、ブール論理自体とは実際には関係ありません。むしろ、Python特有のものです。常にTrue/Falseを返す代わりに、2つのオペランドのいずれかの値を返しますandor

以下は良い説明です:の独特の性質andor

于 2012-11-28T10:13:28.137 に答える
2

これがPythonの仕組みであり、明らかにオペランドタイプの柔軟性を高めます。

Pythonドキュメントから5.式

式xおよびyは最初にxを評価します。xがfalseの場合、その値が返されます。それ以外の場合は、yが評価され、結果の値が返されます。

式xまたはyは最初にxを評価します。xがtrueの場合、その値が返されます。それ以外の場合は、yが評価され、結果の値が返されます。

于 2012-11-28T10:12:53.740 に答える
2

「基本的なプログラミング」を勉強する必要はありません。 Pythonで定義されている演算子andと演算子を学習する必要があります。or

ブール論理の真理値表についてのあなたの考えは正しいですが、Pythonでは、これらの演算子はブール引数を必要とせず、ブール値も返しません。

これらの真理値表を参照してください。ただし、それを覚えておいてxyどのタイプでもかまいません。また、どの値が考慮されるかについてのこの説明falseを確認することも役立ちます。

于 2012-11-28T10:13:57.913 に答える