順番に読み進めながら学べます

bool 型と if 文の使い方

Python の論理型 bool と if 文での条件分岐の基本を学びます。True / False、比較演算、and / or / not の使い方を一通り図解で押さえます。

論理型(bool)とは

論理型(bool、ブーリアン)は True(真)と False(偽)の2つの値しか持たない型です。「はい/いいえ」「成立する/しない」といった2択の状態を表現するために使います。

int が数値、str が文字列を扱うのと同じように、bool は真偽という一種類の情報を専門に扱います。

bool型が取りうる値
bool型True(真)False(偽)値1値2

論理型は他の型と違い、取りうる値が True と False の2つだけに限られる。代入・比較・条件分岐と相性がいい。

TrueFalse先頭が必ず大文字です。trueTRUE と書くと NameError になります。

また文字列ではないので "True" のようにクォートで囲まないでください(それだとstr型になってしまいます)。

# bool型の代入
is_animal = True
is_human = False

print(is_animal)        # True
print(is_human)         # False
print(type(is_animal))  # <class 'bool'>

# "True" と書くと str型になる(別物)
looks_bool = "True"
print(type(looks_bool)) # <class 'str'>

ターミナルで bool 変数を作ってみましょう。

is_studentTrue を代入し、print() で表示してください。

type()is_student の型を表示してください。

Python エディタ

コードを実行してください

比較演算で bool が生まれる

bool 値は True / False と直接書くだけでなく、比較演算の結果としても生まれます。

2つの値を比較する演算子は以下の6種類。結果は必ず TrueFalse(つまり bool)になります。

演算子意味結果
==等しい5 == 5True
!=等しくない5 != 3True
>より大きい5 > 3True
<より小さい5 < 3False
>=以上5 >= 5True
<=以下5 <= 3False
比較演算の流れ
age = 20age >= 18Trueage < 18False評価結果評価結果

式を評価すると True / False のどちらかが返る。この結果を変数に入れても使える。

age = 20

print(age == 20)      # True  (等しい)
print(age != 18)      # True  (等しくない)
print(age >= 18)      # True  (以上)
print(age < 18)       # False (より小さい)

# 結果を変数に入れておける
is_adult = age >= 18
print(is_adult)       # True
print(type(is_adult)) # <class 'bool'>

# 文字列同士も比較できる(==, != が便利)
print("apple" == "apple")  # True
print("apple" == "Apple")  # False (大文字小文字は区別される)

= と == は別物

=(イコール1つ)は代入==(イコール2つ)は比較です。age = 20 は「age に 20 を入れる」、age == 20 は「age は 20 と等しいか?」を判定します。ここを取り違えると意図しない動作につながりやすいので注意しましょう。

score = 75 が用意されています。比較演算の結果が bool になることを確認しましょう。

score == 100 の結果を表示する。

score >= 60 の結果を変数 passed に入れてから表示する。

passed の型を type() で表示する。

Python エディタ

コードを実行してください

if 文で bool を使う

bool が最もよく登場する場面が if 文(条件分岐)です。if のあとに書いた式が True のときだけ、中のブロックが実行されます。

if 文の詳しい使い方は後の章で扱いますが、ここでは「bool の値によって処理が切り替わる」ことを体感しておきましょう。

if 文と bool
if True: print(...)中を実行表示されるif False: print(...)スキップ何も出ないTrue出力Falseスキップ

if の行の末尾にはコロン : を付け、実行したい処理は半角スペース4つ分のインデント(字下げ)で書きます。この字下げが、if に属する処理の範囲を示します。

is_animal = True

# is_animal が True なら中身が実行される
if is_animal:
    print("動物です")

# False だとスキップされ、何も表示されない
is_human = False
if is_human:
    print("人間です")

# 比較演算の結果をそのまま if に渡してもいい
age = 20
if age >= 18:
    print("成人です")

if 文で bool を使い分けてみましょう。

is_open = True を用意し、is_open が True のとき "OPEN" と表示する。

temperature = 35 を用意し、temperature >= 30 のとき "真夏日" と表示する。

Python エディタ

コードを実行してください

論理演算子:and / or / not

複数の条件を組み合わせて判定したいときは、論理演算子 and / or / not を使います。

これらは bool を入力にして bool を返す演算子で、日本語の「かつ」「または」「〜でない」に対応します。

and / or / not の違い
and(かつ)True and TrueTrueor(または)True or FalseTruenot(否定)not TrueFalse結果結果反転

and両方 True のときだけ True。

orどちらかが True なら True。

not は True と False を反転する。

真理値表

andor の結果は、左右の bool の組み合わせで次のように決まります。和集合積集合のような関係と覚えるとわかりやすいです。

ABA and BA or B
TrueTrueTrueTrue
TrueFalseFalseTrue
FalseTrueFalseTrue
FalseFalseFalseFalse
is_man = True
is_adult = True

# and:両方 True のときだけ True
if is_man and is_adult:
    print("成人男性です")

# or:どちらかが True なら True
if is_man or is_adult:
    print("男性か大人です")

# not:反転する
is_child = not is_adult
print(is_child)          # False

# 比較演算と組み合わせても使える
age = 25
if age >= 18 and age < 65:
    print("現役世代")

is_member = Trueage = 15 を使って、論理演算子を試しましょう。

is_member and age >= 18 の結果を表示する。

is_member or age >= 18 の結果を表示する。

not is_member の結果を表示する。

Python エディタ

コードを実行してください

英語の論理演算子を間違えない

他の言語では && || ! を使うものもありますが、Python では必ず and / or / not(英単語)を使います。&& と書くと SyntaxError になります。

この記事では、論理型 (bool) とその使い方を学びました。True / False の2値だけを扱う型であること、比較演算から bool が生まれること、if 文で条件分岐に使えること、そして and / or / not で条件を組み合わせられること — これが条件分岐を書くための土台になります。

次の記事では、数を扱うための int 型float 型(浮動小数点数) をもっと深く見ていきます。

QUIZ

理解度チェック

まずは1問ずつ答えてみましょう。

Q1次のうち、bool型の値として正しいのはどれですか?

Q2次のコードの実行結果はどれですか?
x = 10
print(x == 10 and x < 5)

Q3次のコードの実行結果はどれですか?
is_open = False
print(not is_open)