プログラミングでは、特定の条件が「正しい(真)」か「間違っている(偽)」かを判断する場面が頻繁に発生します。Pythonでは、これら2つの状態を表す専用のデータ型として**ブール型(bool)**が用意されています。
ブール型が持つ値は True(真)と False(偽)の2種類のみです。これらはPythonのキーワードであり、必ず先頭を大文字で記述する必要があります(true や false はエラーとなります)。
この記事では、ブール型の基本的な使い方と、if 文での活用について解説します。
ブール型の基本的な使い方
ブール値は、変数の状態を管理するためによく使われます。
# システムが稼働中かどうか
is_running = True
# エラーが発生したかどうか
has_error = False
print(f"稼働中: {is_running}")
print(f"エラーあり: {has_error}")
# 型の確認
print(f"'is_running' の型: {type(is_running)}")
実行結果:
稼働中: True
エラーあり: False
'is_running' の型: <class 'bool'>
if 文での利用
ブール型の値は、if 文による条件分岐で最もよく使用されます。if 文は、続く条件が True であれば処理を実行し、False であれば実行しません(または else ブロックを実行します)。
def check_permission(is_admin):
"""
管理者かどうかをブール値で受け取り、アクセス権限を判定する
"""
if is_admin: # is_admin が True の場合に実行
print("アクセス許可: 管理者メニュー")
else: # is_admin が False の場合に実行
print("アクセス拒否: 一般ユーザーです")
# 実行
check_permission(True)
check_permission(False)
実行結果:
アクセス許可: 管理者メニュー
アクセス拒否: 一般ユーザーです
比較演算子とブール値
True や False を直接記述するだけでなく、比較演算子(==, !=, >, <, >=, <=)を使ってブール値を得るのが一般的です。比較演算子は、2つの値を比較した結果を True または False として返します。
user_age = 25
required_age_for_entry = 20
# 比較演算子 (>=) がブール値を返す
can_enter = (user_age >= required_age_for_entry)
print(f"比較結果 (can_enter): {can_enter}")
print(f"比較結果の型: {type(can_enter)}")
if can_enter:
print("入室を許可します。")
実行結果:
比較結果 (can_enter): True
比較結果の型: <class 'bool'>
入室を許可します。
Pythonにおける「真偽値判定」
Pythonの if 文は、bool 型の値だけでなく、他のデータ型も「真」か「偽」かとして評価できます。
Falseとみなされる値 (Falsy):False(ブール値)None(None型)0(整数),0.0(浮動小数点数)""(空の文字列)[](空のリスト),()(空のタプル),{}(空の辞書),set()(空のセット)
Trueとみなされる値 (Truthy):- 上記以外の全ての値(
True, 0以外の数値, “abc”などの文字列, 要素が1つでも入ったリストなど)
- 上記以外の全ての値(
この仕組みにより、リストに要素があるかどうかや、文字列が空かどうかを簡潔に記述できます。
active_users = [] # 空のリスト (Falsy)
error_message = "Network Error" # 空でない文字列 (Truthy)
# active_users は空なので False と判定される
if active_users:
print("アクティブなユーザーがいます。")
else:
print("アクティブなユーザーはいません。")
# error_message は空でないので True と判定される
if error_message:
print(f"エラーメッセージ: {error_message}")
else:
print("エラーはありません。")
実行結果:
アクティブなユーザーはいません。
エラーメッセージ: Network Error
論理演算子 (and, or, not)
複数のブール値を組み合わせて、より複雑な条件を作成するために論理演算子が使われます。
not: ブール値を反転させます (not TrueはFalseになります)。and: 両方の値がTrueの場合のみTrueになります。or: どちらか一方の値がTrueであればTrueになります。
is_authenticated = True
is_premium_member = False
# not
if not is_premium_member:
print("(not: プレミアム会員ではありません)")
# and
if is_authenticated and is_premium_member:
print("(and: 認証済みのプレミアム会員です)")
else:
print("(and: プレミアム機能は利用できません)")
# or
if is_authenticated or is_premium_member:
print("(or: サイトの基本機能を利用できます)")
実行結果:
(not: プレミアム会員ではありません)
(and: プレミアム機能は利用できません)
(or: サイトの基本機能を利用できます)
まとめ
- Pythonのブール型(
bool)はTrueとFalseの2つの値を持ちます。 if文などの条件分岐でプログラムの流れを制御するために不可欠です。- 比較演算子(
==,>など)は、結果としてブール値を返します。 - Pythonでは
0や空のリスト([])などもFalseとして扱われる「真偽値判定」の仕組みがあります。
