if文と論理演算子

条件式を組み合わせる

「条件aが成り立つとともに、条件bも併せて成り立つ」のように、複数の条件式を組み合わせてif文を使いたい場合は「論理演算子」を使います。

Pythonの論理演算子には以下の3つがあります。

論理演算子 説明
not not a 値がTrueの場合にはFalseを、Falseの場合にはTrueを返す
and a and b aとbがTrueの場合はTrue、それ以外はFalseを返す
or a or b aとbのどちらかがTrueの場合にはTrue、それ以外にはFalseを返す

実行例は以下の通りです。

#not演算子を使うと結果が反転する
>>> not True
False
>>> not False
True

#and演算子を使うと全てがTrueの場合のみTrueを返す
>>> True and False
False
>>> True and True
True

#or演算子を使うとどちらかがTrueの場合にTrueを返す
>>> True or False
True
>>> True or True
True

例えば、国語、数学、英語の点数を入力して、全てが80点以上の場合のみ「合格です!」と表示し、それ以外だと「不合格です」と表示させるプログラムを記述してみます。

%vim if.py

kokugo = int(input("国語の点数を入力してください:"))
suugaku = int(input("数学の点数を入力してください:"))
eigo = int(input("英語の点数を入力してください:"))

if kokugo >= 80 and suugaku >= 80 and eigo >= 80:
    print ("合格です!")
else:
    print ("不合格です")

実行結果は以下の通りです。

% python if.py
国語の点数を入力してください:81
数学の点数を入力してください:90
英語の点数を入力してください:88
合格です!

% python if.py
国語の点数を入力してください:75
数学の点数を入力してください:89
英語の点数を入力してください:99
不合格です

論理演算子の優先順位

論理演算子には優先順位があり、or演算子よりもand演算子の方が優先順位が高いです。

if kokugo >= 80 or suugaku >= 80 and eigo >= 80:

上記の場合、and演算子のほうが優先されて評価されるため、「数学と英語が80点以上」であるかが先に判断されます。「国語か数学が80点以上」であるかを先に判断させるためには以下のように「( )」で囲う必要があります。

if (kokugo >= 80 or suugaku >= 80) and eigo >= 80:

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: