前回の記事の続きになります。
今回の記事はif文の補完編②として、「否定形」や「条件演算子(条件式)」を紹介していきます。
「否定論理式」や「比較演算子の否定形」、「条件演算子(条件式)」の使用方法を忘れた人や、現在プログラムを勉強している人向けの記事です。
また、分かりやすさを優先しているため、詳しいニュアンスとは異なるかもしれませんが、予めご了承ください。
if文 | 否定形とは?
一つに否定形と言っても、複数の使い方があります。
ここでは、それらの使い方について紹介していきます。
否定形について
否定形と一口に言っても、複数の使い方が存在します。
論理式を丸ごと否定する「否定論理式」や、特定の変数に対して一致していないことを確認するために使用される「比較演算子の否定形」が存在します。
「比較演算子の否定形」は、比較的簡単に使用することが出来ますが、「否定論理式」は性質上使い方が難しいです。
比較演算子の否定形
コードにすると下記の様になります。
if a != 0
このコードは、変数aが0「ではない」場合に「真」となり、0で「あった」場合に「偽」となります。
現実世界で使用する「ノットイコール」と同じようなものと考えていただいて構いません。
また、変数に対しての「比較演算子の一部」であるため、使用方法は限られていることもあり、比較的簡単に使用できます。
否定論理式
「否定論理式」は、前回の記事で紹介させていただいた「論理演算子」を否定する使用方法です。
「論理演算子」について、詳しくは下記記事をご参照ください。
「論理演算子」を否定する性質上、使用方法は難しくなってきます。
なぜなら、大抵の場合は「複合型の論理演算子」を否定する場合にも、使用されることがあるからです。
筆者自身、仕事で他人のコードを読むことになった時に、一番の障壁となった処理でもあります。
基本的に「否定論理式」を使用するのは、「論理演算子」より条件が絞り込み易い場合が多いのですが、どういった考えで構成しているのか考えないといけません。
否定論理積 (NAND)
「否定論理積」をコードにすると下記の様になります。
if not (nensyu >= 10000000 and 30 > nenrei):
前回の記事で使用したコードに「not」を付け足しただけになります。
すなわち、この「not (論理積)」を使用したものが、「否定論理積」です。
上記のコードの場合は、年収が1000万未満か年齢が30以上の場合に「真」として、直下の処理が実行されます。
もちろんですが、両者の条件を満たしている場合も「真」として処理されます。
年収が1000万以上「かつ」年齢が30未満の場合は「偽」という処理です。
要するに、「否定論理積(NAND)」の場合は下記の様な結果になります。
真 | 偽 | |
真 | 偽 | 真 |
偽 | 真 | 真 |
否定論理和 (NOR)
「否定論理和」をコードにすると下記の様になります。
if not (shintyo >= 170 or 160 >= shintyo):
前回の記事の身長部分に「not」を付け足したものです。
すなわち、この「not (論理和)」を使用したものが、「否定論理和」です。
上記のコードの場合は、身長が160より大きく、170より小さい場合のみ、「真」として直下の処理が実行されます。
身長が160以下であったり、170以上の場合は、「偽」として処理されます。
要するに、「否定論理和(NOR)」の場合は下記の様な結果になります。
真 | 偽 | |
真 | 偽 | 偽 |
偽 | 偽 | 真 |
否定形使用時の注意点
否定形使用時の注意点として、否定形の重ね掛けが挙げられます。
例えば、下記の様なコードです。
if not (number != 0):
見てもらえたら分かると思いますが、「()」内でnumberが0「ではない」ことを確認した後に、結果を反転させています。
つまり、「裏の裏」の様になっており、下記のコードと同じ結果になっています。
if (number == 0):
このように、「否定の否定」にならないように注意してください。
また、「否定の否定」になりそうであれば、「入れ子」にして分かりやすくするのも一つの手です。
実際に否定形を利用したコードを書いてみよう!
実際に否定形を利用したコードを書いてみましょう!
①「VS Code」を起動し、新規作成でファイルを作成します。
②下記のコードを入力します。
nensyu = 12000000
nenrei = 31
shintyo = 165
if nenrei != 0:
if not (nensyu >= 10000000 and 30 > nenrei):
print("あなたは超人ですね!")
else:
print("処理完了!")
if not (shintyo >= 170 or 160 >= shintyo):
print("日本人の平均身長に近いですね。")
else:
print("処理完了!2")
else:
print("処理完了!3")
③コマンドプロンプトを起動し、下記のコマンドを入力します。
python ファイル名.py
④下記画像のように表示されていればOKです。

今回作成したコードですが、予め年齢が0「ではない」ことを確認しています。※input関数を使用していないので、意味ないっちゃ意味ないです。
その後、年収が1000万以上「かつ」年齢が30未満「ではない」ことを条件としています。
最後に、身長が170以上「か」160以下「ではない」ことを条件としています。
if文 | 条件演算子 (条件式)
ここからは、条件演算子でif文が使用される場合の使用方法を紹介していきます。
条件演算子について
「条件演算子」とは、前後の変数などを比較した結果に応じて、変数を代入できるようなものになっています。
「条件演算子」をコードにすると下記の様になります。
min = a if a < b else b
上記のコードは、変数aとbを比較し、aが小さかった場合はaを、そうでなければbを、変数minに代入するものです。
便利な演算子ですが、慣れるまでは普通のif文を使用すれば良いと思います。
普通のif文にしたときは、下記の様なコードになります。
if a < b:
min = a
else:
min = b
実際に条件演算子を利用したコードを書いてみよう!
実際に条件演算子を利用したコードを書いてみましょう。
①「VS Code」を起動し、新規作成でファイルを作成します。
②下記のコードを入力します。
a = int(input("数値を入力してください。a:"))
b = int(input("数値を入力してください。b:"))
number = a if a < b else b
print(number)
③コマンドプロンプトを起動し、下記のコマンドを入力します。
python ファイル名.py
④下記画像のように表示されていればOKです。

まとめ
今回は「否定論理式」や「比較演算子の否定形」について紹介してきました。
「否定形」は、普通の「論理式」や「比較演算子」と比較して、難しいと感じる人が多いと思います。
筆者自身も、正直なところ「否定形」は苦手なため、出来る限り使用しないようにしています。
ですので、「否定形」が苦手な人でも、プログラミングを諦めずに「論理式」を駆使して頑張ってみてください。
また、どうしても「否定形」を使用しなければいけなさそうであれば、記事の中にもあったように表にしてみるのも一つの手です。
それでは、今回はここまでということで、お疲れ様でした。