Tech-Joho.info

ブール演算の戻り値の型

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ブール演算