PR
更新:2024/09/16

Pythonの真偽値(True,False)・真偽値への型変換・例題について

ふゅか
ふゅか
今日のテーマは「真偽値の基本」だね。真(True)か偽(False)の2つしかないって、わかりやすいよね!
はるか
はるか
うん、TrueかFalse。

1. 真偽値の基本

真偽値とは、「真(True)」または「偽(False)」という2つの値を取るデータ型であり、主に条件分岐やループなどの制御フローで使用されます。Pythonでは、真偽値は TrueFalse という2つのリテラルで表され、bool 型と呼ばれるデータ型です。これらは他のプログラミング言語の1や0に対応していると考えるとわかりやすいです。True は「真」、False は「偽」を意味します。

x = True
y = False

print(x)  # True
print(y)  # False

2. Pythonでの真偽値の評価

Pythonでは、条件式や値そのものが True または False として評価されます。以下のようなものが自動的に False として評価されます。

2.1. False として評価されるもの

  • False
  • None
  • 0
  • 空のシーケンス(''[]() など)
  • 空のマップ({} など)

これら以外のものは、一般的に True として評価されます。

if 0:
    print("これは実行されません")
else:
    print("0はFalseと評価されます")

上記のコードでは、0False として評価されるため、else ブロックが実行されます。

はるか
はるか
Pythonでは、0とか空のリストはFalseと評価される。
ふゅか
ふゅか
そう!逆に値が入っているリストや文字列はTrueとして扱われるのよ。だから、0が出たときは「実行されない」ってことになるのね☆

3. 比較演算と真偽値

比較演算(==, !=, >, <, >=, <=)は、条件式の結果として True または False を返します。

a = 10
b = 5

print(a > b)  # True
print(a == b)  # False

これらの比較演算は、条件分岐に使用されます。

3.1. 論理演算子と真偽値

Pythonでは、論理演算子 and, or, not を使用して、複数の条件式を組み合わせたり、真偽値を反転させることができます。

  • and: 両方の条件が True のときに True を返す
  • or: どちらか一方の条件が True であれば True を返す
  • not: 真偽値を反転する(TrueFalse に、FalseTrue にする)
a = True
b = False

print(a and b)  # False
print(a or b)   # True
print(not a)    # False
ふゅか
ふゅか
論理演算子も便利だよ! and は両方TrueのときだけTrue、orはどちらかがTrueならTrueなの!
はるか
はるか
そうだね。notでTrueをFalseに反転もできる。

3.2. 型変換と真偽値

Pythonでは、他のデータ型を bool() 関数で真偽値に変換することができます。先ほど説明したように、数値や文字列などの型は暗黙的に True または False として扱われますが、明示的に変換することも可能です。

print(bool(1))     # True
print(bool(0))     # False
print(bool("abc")) # True
print(bool(""))    # False

1"abc"True に評価され、0 や空文字列 ""False に評価されます。

3.3. if文と真偽値

最もよく使われる真偽値の使用例は if 文です。条件が True の場合に処理を行い、False の場合には他の処理を行います。

x = 10

if x > 5:
    print("xは5より大きい")
else:
    print("xは5以下です")

上記の例では、x5 より大きいため、"xは5より大きい" が出力されます。

4. 例題

4.1. 例題 1:年齢の判定

ユーザーが年齢を入力し、その年齢が18歳以上であれば「成人」、未満であれば「未成年」と出力するプログラムを作成してください。

期待される出力:

年齢を入力してください: 20
成人

または

年齢を入力してください: 16
未成年

解答の手順:

  1. input() 関数を使ってユーザーから年齢を入力します。
  2. 年齢を整数に変換し、18以上かどうかを if 文でチェックします。
  3. 18以上であれば「成人」、そうでなければ「未成年」と出力します。

解答:

age = int(input("年齢を入力してください: "))

if age >= 18:
    print("成人")
else:
    print("未成年")

4.2. 例題 2:割引対象か判定

ある商品が割引対象かどうかを確認するプログラムを作成してください。価格が1000円以上であれば割引対象、そうでなければ割引対象外と出力します。

期待される出力:

商品の価格を入力してください: 1500
割引対象

または

商品の価格を入力してください: 800
割引対象外

解答の手順:

  1. ユーザーから商品の価格を入力します。
  2. int() を使って入力を整数に変換し、価格が1000円以上かどうかを判定します。
  3. 条件に応じて「割引対象」または「割引対象外」を出力します。

解答:

price = int(input("商品の価格を入力してください: "))

if price >= 1000:
    print("割引対象")
else:
    print("割引対象外")

4.3. 例題 3:真偽値に変換

リスト内の要素をすべて真偽値に変換するプログラムを作成してください。True に変換されるルールは、空のリストや値 0False になり、それ以外の値は True になります。

期待される出力:

元のリスト: [0, 1, '', 'Hello', [], [1, 2]]
変換後のリスト: [False, True, False, True, False, True]

解答の手順:

  1. bool() 関数を使ってリスト内の各要素を True または False に変換します。
  2. map() 関数を使用して、リスト全体に対して bool() を適用します。

解答:

original_list = [0, 1, '', 'Hello', [], [1, 2]]
converted_list = list(map(bool, original_list))

print("元のリスト:", original_list)
print("変換後のリスト:", converted_list)


check

Pythonの基本から応用まで、幅広くカバーする記事を公開中です。学習のポイントや実践的なコード例を通じて、Pythonの魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!

Pythonの記事のまとめ

PR