Python独学ならTech-Joho TOP > Python問題集 > ブール演算の戻り値の型
問題
下のコードの<穴埋め>の部分を穴埋めして、
と表示されるようにせよ。
t = type(1 <穴埋め> False) print(t)
おまけ問題: 同様に、と表示されるようにせよ
下の欄に回答を入力し、「回答完了」を押して下さい!回答例が表示されます。
実行結果の例
実行結果は、問題の通り、下記のようになります。
回答例
orやandの演算子の戻り値のルールを知っていれば回答できます。
t = type(1 and False) print(t)
解説
or演算子は、ブール演算子です。演算子の両側の値の真偽値を評価した時、いずれか1つがTrueであれば真偽値が真の値が戻ります。
しかし、この説明は実は厳密には間違いというか、説明不足です。
実際のorの仕様は、以下のようになっています。
最初にorの左側の値の真偽値を評価し、真であれば左側の値をそのまま返します。bool型のTrue/Falseが返るわけでは無いということです。
しかも、この時右側の式の値は評価されません。
Orの計算の性質上、左が真なら右を調べる必要がないからです。
下のコードを実行してみてください。
右側の式が評価されるなら、”hatena!”と表示されるはずですが、実際は、”OKです”が表示されるだけです。
また、おまけ問題は、右側の値が返るというandの性質を利用シたものになっています。
def hatena(): print("hatena!") return False print("OKです" or hatena())
andとorについてはリファレンスもご覧ください。
Python3 referenceブール演算