第79回【Python】NAND 演算の基本、NOR 演算の基本、XNOR 演算の基本

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

はじめに

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

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

キャンプ場でも、勉強しています。LeoLuna(夫婦)の場合、キャンプの主目的が焚火で普段作らないものに挑戦しよう(夕食)なので、それ以外の時間は読書をしたり勉強をしたり、たまには昼寝をしたり、まったり過ごします。

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

NAND 演算の基本

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

入力1入力2出力
001
011
101
110

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

・ A, B は 0 または 1


0 0

NAND は、Not And の略なので、論理積の否定を書いてあげれば OK !

Python
A,B = map(int,input().split())
print(int(not(A and B)))

Python の not は、bool 型になってしまうことに注意。

VBA
AB = Split(Cells(1, 1), " ")
A = CBool(AB(0))
B = CBool(AB(1))
Debug.Print CInt(Not (A And B)) * -1

NOR 演算の基本

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

入力1入力2出力
001
010
100
110

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

・ A, B は 0 または 1


0 0

NOR は、Not Or の略なので、論理和の否定を書いてあげれば OK !

Python
A,B = map(int,input().split())
print(int(not(A or B)))

こちらも、Python の not は、bool 型になってしまうことに注意。

VBA
AB = Split(Cells(1, 1), " ")
A = CBool(AB(0))
B = CBool(AB(1))
Debug.Print CInt(Not (A Or B)) * -1

XNOR 演算の基本

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

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

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

・ A, B は 0 または 1


0 0

XNOR は、Not Xor の略なので、排他的論理和の否定を書いてあげれば OK !

Python
A,B = map(int,input().split())
print(int(not(A ^ B)))

こちらも、Python の not は、bool 型になってしまうことに注意。

VBA
AB = Split(Cells(1, 1), " ")
A = CBool(AB(0))
B = CBool(AB(1))
Debug.Print CInt(Not (A Xor B)) * -1

最後に

Python の場合、not は bool 型であることを頭に入れておこう。多くの場合は、True or False が分かればいいのだけれど、結果を掛け算して False の場合は 0 という値を返す、みたいなことをするときには注意が必要かもしれない。

not(A and B) * 100 の結果は、True か False しか出力されない。

int(not(A and B) * 100) の結果は、1 か 0 しか出力されない。

int(not(A and B)) * 100 の結果は、100 か 0 が出力される。

よく考えると当然のことだけれど、他の言語の癖でさらりと書いてしまうと、罠になる可能性がある。

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

Pythonpaiza,学習,Python

Posted by LeoSaki