H - 1.07.論理式の値とbool型 Editorial /

Time Limit: 0 msec / Memory Limit: 0 KB

前のページ | 次のページ

キーポイント

  • 条件式の値は bool 型という型の値である。
  • bool 型は True (真) と False (偽) の2種類の値のいずれかを取る型である。
  • 数値や文字列など色々な値は条件式の値として用いることができる。結果は型ごとにルールが決まっている。
    • 数値の場合、0 でなければ True
    • 文字列の場合、"" (空文字列) でなければ True

条件式の結果

1.06節では if x == 0: のように if 文を用いることで条件分岐を記述できる、ということを扱いました。じつはこの「x == 0」の部分自体が値を持っています。このことを確認してみましょう:

x = 0
print(x == 0) # 「x が 0 と等しいかどうか」を出力
print(x >= 1) # 「x が 1 以上かどうか」を出力
実行結果
True
False

条件式が成り立っている場合の値は "True"、成り立っていない場合は値は "False" と出力されました。これらは、それぞれ日本語でいうところの「真」「偽」に相当します。条件式は、それが成り立っている場合は真、成り立っていない場合は偽、という値を持っている、ということになります。

条件式の結果は値を持つので、これを変数に格納したり、格納した変数同士で演算を行うことも可能です。以下の例では条件式の値を変数 a, b に代入し、それらの論理演算を行っています。

x = 5
a = 0 <= x # a に「xが0以上か」の条件式の値を代入 (ここでは True)
b = x <= 10 # b に「xが10以下か」の条件式の値を代入 (ここでは True)
c = a and b # c に「a かつ b か」の論理演算式の値を代入
print(a,b,c)
実行結果
True True True

bool 型

True と False

先程出力された条件式の値である True False は bool型というデータ型の値です。bool型はこれらTrue (真) もしくは False (偽) の2種類の値のみを取ります。
bool 型の値は、前節のように条件式を記述する以外にも、True False を直接記述することでも表現することができます。

if True:
    print("条件が成り立っています")
if False:
    print("条件が成り立っています")
else:
    print("条件が成り立っていません")
実行結果
条件が成り立っています
条件が成り立っていません

他の型からの変換

実は if 文の条件式には True False 以外の値を与えることも可能です:

if 10:
    print("10 は True 扱い")
if not 0:
    print("0 は False 扱い")
if -1:
    print("-1 は True 扱い")
実行結果
10 は True 扱い
0 は False 扱い
-1 は True 扱い

上記のように数値を条件式に与えた場合、「値が0でなければ True、0 と等しければ False」というルールで変換が行われます。このような型の変換のことをキャストと呼びます。上記の例だと int 型が bool 型にキャストされた、ということになります。

キャストは数値以外でも行われます。代表的な例を次の表に記載します:

変換ルール True となる例 False となる例
数値 (int, float) 値が0と等しいときのみ False 1, 0.01, -1e18 0, 0.0
文字列 空文字列 "" のときのみ False "hoge", "A", " " ""
配列1 配列が空 (長さが 0) のときのみ False [1,2,3], ["foo"], [0] []

問題

リンク先の問題を解いてください。

EX7.bool値パズル

前のページ | 次のページ


  1. 配列に関しては後の節1.10.リストで扱います。整理のために記載しましたがここでは読み飛ばしていただいて構いません。