第78回【Python】論理積( AND )の基本、論理和( OR )の基本、否定( NOT )の基本、排他的論理和( XOR )の基本

現在取り組んでいるのは、paiza ラーニング問題集「論理演算メニュー」になります。

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

Python をゼロから勉強してみよう、のコーナー 78 回目です。

今回からは「論理演算メニュー」に挑戦します。真理値表は好きです。黙々と 0 と 1 を並べていくと何かしらの規則性が隠れていそうな並びが出てきて美しいからです。

それでは、今日も頑張ってみようと思います。

論理積( AND )の基本

0 または 1 の整数 A と B が与えられます。 A AND B の結果を出力してください。
ここで、 AND 演算とは、以下の表にしたがって算出する論理演算のことを指します。

入力1入力2出力
000
010
100
111

表を参考にして条件分岐を書くことによってもこの問題は解けますが、なるべく各言語に備わっている論理演算の機能を用いて実装するようにしましょう。

A B

すべてのテストケースにおいて、以下の条件をみたします。

・ A, B は 0 または 1


0 0

Python では and、VBA では And が、言語に備わっている論理演算子です。

Python
A,B = map(int,input().split())
print(A and B)
VBA
AB = Split(Cells(1, 1), " ")
A = Val(AB(0))
B = Val(AB(1))
Debug.Print A And B

論理和( OR )の基本

0 または 1 の整数 A と B が与えられます。 A OR B の結果を出力してください。
ここで、 OR 演算とは、以下の表にしたがって算出する論理演算のことを指します。

入力1入力2出力
000
011
101
111

表を参考にして条件分岐を書くことによってもこの問題は解けますが、なるべく各言語に備わっている論理演算の機能を用いて実装するようにしましょう。

A B

すべてのテストケースにおいて、以下の条件をみたします。

・ A, B は 0 または 1


0 0

Python では or、VBA では Or が、言語に備わっている論理演算子です。

Python
A,B = map(int,input().split())
print(A or B)
VBA
AB = Split(Cells(1, 1), " ")
A = Val(AB(0))
B = Val(AB(1))
Debug.Print A Or B

否定( NOT )の基本

0 または 1 の整数 A が与えられます。 NOT A の結果を出力してください。
ここで、 NOT 演算とは、以下の表にしたがって算出する論理演算のことを指します。

入力出力
01
10
A

すべてのテストケースにおいて、以下の条件をみたします。

・ A は 0 または 1


0

Python では not、VBA では Not が、言語に備わっている論理演算子です。

Python
A = int(input())
print(int(not A))

そのまま not A と出力させると、True または False が表示されるので、int 型に変える必要がある。

VBA
Dim A As Boolean
A = Cells(1, 1)
Debug.Print CInt(Not A) * -1

VBA だと、True が -1 に変換されてしまうので、一工夫。これが正しいかどうかはわからない。

排他的論理和( XOR )の基本

0 または 1 の整数 A と B が与えられます。 A XOR B の結果を出力してください。
ここで、 XOR 演算とは、以下の表にしたがって算出する論理演算のことを指します。

入力1入力2出力
000
011
101
110
A B

すべてのテストケースにおいて、以下の条件をみたします。

・ A, B は 0 または 1


0 0

Python では ^、VBA では Xor が、言語に備わっている論理演算子です。

Python
A,B = map(int,input().split())
print(A ^ B)
VBA
AB = Split(Cells(1, 1), " ")
A = Val(AB(0))
B = Val(AB(1))
Debug.Print A Xor B

最後に

駆け足で論理演算子 4 つに取り組んでみました。Python の排他的論理和の ^ 以外は、ほぼそのまま使えるので難しくはない。Not 演算子については、Python も VBA もちょっと癖があったけれど。

一つ目の結果が True で、二つ目の結果が False の場合にどうであるか、みたいな判定はいろんな場面で必要なので、知っていると知らないとでは大違いじゃないだろうか。

引き続き、よろしくお願いいたします!

Pythonpaiza,学習,Python

Posted by LeoSaki