Python3のブール論理を理解する

提供:Dev Guides
移動先:案内検索

序章

ブールデータ型は、TrueまたはFalseの2つの値のいずれかになります。 プログラミングではブール値を使用して、比較を行い、特定のプログラムの制御フローを決定します。

ブール値は、数学の論理ブランチに関連付けられている真理値を表します。これは、コンピューターサイエンスのアルゴリズムに情報を提供します。 数学者のジョージブールにちなんで名付けられたブールという単語は、常に大文字のBで始まります。 値TrueFalseも、Pythonの特別な値であるため、常にそれぞれ大文字のTとFになります。

このチュートリアルでは、Pythonでブール値がどのように機能するかを理解するために必要なことを確認し、比較演算子、論理演算子、および真理値表について説明します。

前提条件

Python 3をインストールし、コンピューターまたはサーバーにプログラミング環境をセットアップする必要があります。 プログラミング環境をセットアップしていない場合は、ローカルプログラミング環境またはサーバー上のプログラミング環境のインストールおよびセットアップガイドを参照して、オペレーティングに適したものにすることができます。システム(Ubuntu、CentOS、Debianなど)

比較演算子

プログラミングでは、比較演算子を使用して値を比較し、TrueまたはFalseの単一のブール値まで評価します。

情報:このチュートリアルのサンプルコードに従うには、python3コマンドを実行して、ローカルシステムでPythonインタラクティブシェルを開きます。 次に、>>>プロンプトの後に例を追加して、例をコピー、貼り付け、または編集できます。


次の表は、ブール比較演算子です。

オペレーター その意味
== に等しい
!= 等しくない
< 未満
> より大きい
<= 以下
>= 以上

これらの演算子がどのように機能するかを理解するために、Pythonプログラムで2つの整数を2つの変数に割り当てましょう。

x = 5
y = 8

この例では、xの値は5であるため、8の値を持つyよりも小さくなります。

これらの2つの変数とそれに関連する値を使用して、上の表の演算子を見ていきましょう。 このプログラムでは、各比較演算子がTrueまたはFalseのどちらに評価されるかを出力するようにPythonに要求します。 私たちや他の人間がこの出力をよりよく理解できるように、Pythonに文字列を出力して、評価内容を表示させます。

x = 5
y = 8

print("x == y:", x == y)
print("x != y:", x != y)
print("x < y:", x < y)
print("x > y:", x > y)
print("x <= y:", x <= y)
print("x >= y:", x >= y)

このプログラムを実行すると、次の出力が表示されます。

Outputx == y: False
x != y: True
x < y: True
x > y: False
x <= y: True
x >= y: False

数理論理学に従って、上記の各式で、Pythonは次のことを評価しました。

  • 5(x)は8(y)に等しいですか? False
  • 5は8と等しくありませんか? True
  • 5は8未満ですか? True
  • 5は8より大きいですか? False
  • 5は8以下ですか? True
  • 5は8以上ですか? False

ここでは整数を使用しましたが、float値で置き換えることができます。

文字列はブール演算子でも使用できます。 追加の文字列メソッドを使用しない限り、大文字と小文字が区別されます。

文字列を実際にブール演算子と比較する方法は次のとおりです。

Sammy = "Sammy"
sammy = "sammy"

print("Sammy == sammy: ", Sammy == sammy)

上記のプログラムの出力は次のようになります。

OutputSammy == sammy:  False

上記の文字列"Sammy"は、文字列"sammy"と同じではありません。これは、これらが同一ではないためです。 1つは大文字のSで始まり、もう1つは小文字のsで始まります。 ただし、"Sammy"の値が割り当てられている別の変数を追加すると、次のように評価されます。

Sammy = "Sammy"
sammy = "sammy"
also_Sammy = "Sammy"

print("Sammy == sammy: ", Sammy == sammy)
print("Sammy == also_Sammy", Sammy == also_Sammy)

上記のプログラムを実行すると、次の出力が得られます。 これは、文字列が完全に同一である限り(大文字と小文字を含む)、ブール論理の観点からは等しいと評価されることを示しています。

OutputSammy == sammy:  False
Sammy == also_Sammy:  True

><などの他の比較演算子を使用して、2つの文字列を比較することもできます。 Pythonは、文字のASCII値を使用して、これらの文字列を辞書式で比較します。

比較演算子を使用してブール値を評価することもできます。

t = True
f = False

print("t != f: ", t != f)

上記のプログラムは以下を返します。

Outputt != f:  True

上記の出力に示されているように、私たちが書いたコードは、TrueFalseと等しくないと評価しました。

2つの演算子===の違いに注意してください。

x = y    # Sets x equal to y
x == y  # Evaluates whether x is equal to y

最初の=は代入演算子であり、ある値を別の値と等しく設定します。 2番目の==は、2つの値が等しいかどうかを評価する比較演算子です。

論理演算子

値を比較するために使用される3つの論理演算子があります。 式をブール値まで評価し、TrueまたはFalseのいずれかを返します。 これらの演算子は、andor、およびnotであり、次の表で定義されています。

オペレーター その意味
and 両方が真の場合は真 x and y
or 少なくとも1つが真の場合は真 x or y
not falseの場合にのみtrue not x

論理演算子は通常、2つ以上の式が真であるかどうかを評価するために使用されます。 たとえば、成績がおよびに合格しているかどうかを判断するために使用でき、学生はコースに登録されています。 これらの両方のケースに当てはまる場合、学生にはシステムの成績が割り当てられます。 もう1つの例は、ユーザーが過去6か月間にストアクレジットまたはを購入したかどうかに基づいて、ユーザーがオンラインショップの有効なアクティブ顧客であるかどうかを判断することです。

論理演算子がどのように機能するかを理解するために、次の3つの式を評価してみましょう。

print((9 > 7) and (2 < 4)) # Both original expressions are True
print((8 == 8) or (6 != 6)) # One original expression is True
print(not(3 <= 1))         # The original expression is False
OutputTrue
True
True

最初のケースであるprint((9 > 7) and (2 < 4))では、and演算子が使用されていたため、9 > 72 < 4の両方がTrueと評価されます。

2番目のケースであるprint((8 == 8) or (6 != 6))では、8 == 8がTrueと評価されたため、or演算子が使用されたため、6 != 6がFalseと評価されても違いはありませんでした。 。 and演算子を使用した場合、これはFalseと評価されます。

3番目のケースprint(not(3 <= 1))では、not演算子は3 <=1が返すFalse値を否定します。

整数の代わりにfloatを使用して、False評価を目指しましょう。

print((-0.2 > 1.4) and (0.8 < 3.1))    # One original expression is False
print((7.5 == 8.9) or (9.2 != 9.2)) # Both original expressions are False       
print(not(-5.7 <= 0.3))                # The original expression is True

上記の例では、

  • andには、少なくとも1つのFalse式がFalseと評価される必要があります。
  • orは、両方の式がFalseと評価される必要があります。
  • notは、新しい式がFalseと評価されるために、その内部式がTrueである必要があります。

上記の結果が不明確に思われる場合は、以下の真理値表を調べて、最新情報を入手します。

andor、およびnotを使用して複合ステートメントを作成することもできます。

not((-0.2 > 1.4) and ((0.8 < 3.1) or (0.1 == 0.1)))

最初に最も内側の式(0.8 < 3.1) or (0.1 == 0.1)を見てみましょう。 両方の数学ステートメントがTrueであるため、この式はTrueと評価されます。

これで、戻り値Trueを取得し、それを次の内部式(-0.2 > 1.4) and (True)と組み合わせることができます。 この例では、数学ステートメント-0.2 > 1.4がFalseであり、(False) and (True)がFalseを返すため、Falseが返されます。

最後に、外部式not(False)があり、これはTrueと評価されるため、このステートメントを出力した場合の最終的な戻り値は次のようになります。

OutputTrue

論理演算子andor、およびnotは式を評価し、ブール値を返します。

真理値表

数学の論理ブランチについて学ぶことはたくさんありますが、プログラミング時のアルゴリズム的思考を改善するために、その一部を選択的に学ぶことができます。

以下は、比較演算子==、および各論理演算子andor、およびnotの真理値表です。 それらを推論することができるかもしれませんが、それはあなたのプログラミングの意思決定プロセスをより速くすることができるので、それらを暗記するために働くことも役立つかもしれません。

==真理値表

x == y 戻り値
==
== 誤り 誤り
誤り == 誤り
誤り == 誤り

AND真理値表

x y 戻り値
誤り 誤り
誤り 誤り
誤り 誤り 誤り

または真理値表

x また y 戻り値
また
また 誤り
誤り また
誤り また 誤り 誤り

真理値表ではありません

いいえ x 戻り値
いいえ 誤り
いいえ 誤り

真理値表は、論理で使用される一般的な数表であり、コンピュータープログラミングでアルゴリズム(命令)を作成するときに覚えたり覚えたりするのに役立ちます。

フロー制御にブール演算子を使用する

フロー制御ステートメントの形式でプログラムのストリームと結果を制御するには、条件の後にを使用できます。

condition は、ブール値TrueまたはFalseまで評価され、プログラムで決定が行われるポイントを示します。 つまり、条件は、何かがTrueまたはFalseと評価されるかどうかを示します。

は、条件に従い、プログラムの結果を指示するコードのブロックです。 つまり、「xがTrueの場合、これを実行する」という構造の dothisの部分です。

以下のコードブロックは、Pythonプログラムのフローを制御するために条件付きステートメントと連携して動作する比較演算子の例を示しています。

if grade >= 65:                   # Condition
    print("Passing grade")       # Clause

else:
    print("Failing grade")

このプログラムは、各学生の成績が合格か不合格かを評価します。 成績が83の生徒の場合、最初のステートメントはTrueと評価され、Passing gradeの印刷ステートメントがトリガーされます。 成績が59の生徒の場合、最初のステートメントはFalseと評価されるため、プログラムはelse式に関連付けられたprintステートメントの実行に進みます。Failing grade

PythonのすべてのオブジェクトはTrueまたはFalseに評価できるため、 PEP 8スタイルガイドでは、値をTrueまたはFalseと比較しないことをお勧めします。予期しないブール値を頻繁に返します。 つまり、プログラムでif sammy == True:を使用することは回避する必要があります。 代わりに、sammyをブール値を返す別の非ブール値と比較してください。

ブール演算子は、フロー制御ステートメントを介してプログラムの最終的な結果を決定するために使用できる条件を示します。

結論

このチュートリアルでは、ブール型に属する比較演算子と論理演算子、および真理値表と、プログラムフロー制御にブールを使用する方法について説明しました。

他のデータ型について詳しくは、「データ型について」チュートリアルをご覧ください。また、条件文については、「条件文の書き方」チュートリアルをご覧ください。

また、無料のPython eBook、 Pythonでコーディングする方法もあり、初心者とクイックリファレンスが必要な人の両方をサポートできます。