いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【Python】boolean型でifしたい

・お題:boolean型の変数を使って、ifの条件分岐をしたい。

 

・boolean型は、True/Falseを示す型のことらしい。

・a=Trueとすれば、aにTrueというboolean変数が入った状態になる。また、Trueはintの1、Floatの1.0、strの"True"に対応しており、Falseはintの0、Floatの0.0、strの"False"に対応しているらしく、boolean型を渡すべきところにこれらを渡しても勝手に判別してくれるっぽい

・boolean型を使うタイミングで最も分かりやすいのは、if構文なのではないかと思う。

if 条件:
    条件がTrueの場合の処理
else:
    条件がTrueでなかった場合の処理

といった形で記載する。

・条件にはbool型の変数を放り込めば良いことになる。

例えば、

a=True
b=0
c="True"
d=0.0

とすれば、

if a:
    print("トゥルー")
else:
    print("フォールス")

で「トゥルー」が返ってくる。ちなみに、ifの後にcを持ってくれば「トゥルー」、bやdを持ってくれば「フォールス」が返ってくる。ifの後に条件ではなく変数がポツンとあるのに違和感を覚えたが、aそのものがbooleanとして解釈可能なら、こういう挙動になるらしい。

・andやorで条件をつなぐこともできる。

if a and b:
    print("トゥルー")
else:
    print("フォールス")

で「フォールス」が返ってくるし、b or cなら「トゥルー」が返ってくる。

・数値をそのままTrue/Falseで解釈してくれるので、以下のように倍数か否かを判別することもできる。

n=120
m=25

if n%m:
    print(f"{n}は{m}の倍数ではありません")
else:
    print(f"{n}は{m}の倍数です")

とすれば、「120は25の倍数ではありません」が返ってくる。

 

・ふと疑問に思ったのだけれど、0と1以外の数字を無理やりboolean型にするとどうなるのか?やってみた。

a=np.array([0,1,1,0,1,1])
a.astype(bool)

とすれば当然、

array([False,  True,  True, False,  True,  True])

が返ってくる。

b=np.array([0,1,2,0,-1,0.4637])
b.astype(bool)

を実行すると、

array([False,  True,  True, False,  True,  True])

が返ってきた。どうも、ゼロはFalseでその他はTrueらしい。

 

・いろいろ使えそう。

 

おわり。