#[Python]05章-02 条件の組み合わせ
前節では、1つの条件を用いて、if文による分岐について触れました。例えば以下のものです。
>>> 5 == 5
True
>>> 5 != 5
False
>>> 5 != 4
True
>>> 5 > 4
True
>>> 5 >= 5
True
>>> 5 > 5
False
しかし、条件についてはもっと複雑なものもあります。例えば「aとbが等しく、かつcとdも等しいとき」といったものです。
こういった条件の組み合わせについて触れていきます。
##AND演算
条件Aと条件Bがあったときに、両方満たす場合(つまり両方ともTrue)に、Trueとなります。
Python Consoleに以下のコードを入力してください。
>>> a = 1
>>> b = -1
>>> a > 0
True
>>> b > 0
False
>>> a > 0 and b > 0
False
上記で、a > 0は条件を満たしていますが、b > 0は条件を満たしていません。
したがって、両方満たしていないため、a > 0 and b > 0はFalseとなります。
今、2つの条件しか記載していませんが、これが3つの条件についてand演算をした場合でも、3つの条件を満たした場合にはTrueとなります。
AND演算について表でまとめると以下の通りになります。
条件A | 条件B | 条件A and 条件B |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
##OR演算
条件Aと条件Bがあったときに、どちらかを満たす場合(つまりどちらかがTrue)に、Trueとなります。
Python Consoleに以下のコードを入力してください。
>>> a = 1
>>> b = -1
>>> a > 0
True
>>> b > 0
False
>>> a > 0 or b > 0
True
上記で、a > 0は条件を満たしていますが、b > 0は条件を満たしていません。
しかし、OR演算の場合、どちらかを満たしていればよいためため、a > 0 or b > 0はTrueとなります。
OR演算について表でまとめると以下の通りになります。
条件A | 条件B | 条件A and 条件B |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
##NOT演算
条件Aがあったときに、それを否定する場合に使用します。
Python Consoleに以下のコードを入力してください。
>>> a = 1
>>> a > 0
True
>>> not a > 0
False
まず、a > 0は1 > 0なので、Trueとなります。しかし、NOT演算の場合は否定するため、それが逆となり、Falseという結果になります。
条件A | not 条件A |
---|---|
True | False |
False | True |
##条件の組み合わせを用いたプログラムの作成
では実際に、条件を組み合わせたif文のプログラムを作成してみましょう。
今回の内容のプログラムは以下のものです。
実際にプログラムを作成してみましょう。chap05フォルダ内に05-02-01.pyというファイルを作成し、以下のコードを入力してください。
month = int(input('何月かを入力してください(1~12):'))
if month >= 3 and month <= 5:
print('春です')
elif month >= 6 and month <= 8:
print('夏です')
elif month >= 9 and month <= 11:
print('秋です')
elif month == 12 or month <= 2:
print('冬です')
else:
print('その月は存在しません。')
<05-02-01.py実行結果>
【実行結果】
何月かを入力してください(1~12):7
夏です
解説していきましょう。
まず、最初に何月かを入力して、そのあと各条件いずれかにあてはまる箇所のif文内の処理が実行されます。
今回、7と入力したため、month >= 6 and month <= 8の個所にあてはまるのでそこのif文内の処理が実行され「夏です」と表示されます。
なお、month >= 6 and month <= 8の条件の個所について、6 <= month <= 8という形に変更できないのでしょうか?そのような表記も実際可能です。
05-02-01.pyのプログラムを以下のように改良して実行してみましょう。
month = int(input('何月かを入力してください(1~12):'))
if 3 <= month <= 5:
print('春です')
elif 6 <= month <= 8:
print('夏です')
elif 9 <= month <= 11:
print('秋です')
elif month == 12 or 1 <= month <= 2:
print('冬です')
else:
print('その月は存在しません。')
<05-02-01.py実行結果>
【実行結果】
何月かを入力してください(1~12):1
冬です
どちらかと言えば、こちらの範囲で書く形式の条件のほうが見やすいかと思います。
ただし、現在範囲で記載する条件はPythonのみとなっています。ほかの言語のC言語やJava言語などは範囲で書く形式は使用できないので注意してください。
##演習問題
演習問題を用意しました。ぜひ解いてみてください。なお、ファイル名は[ ]内に指定したものを使用して、chap05内に作成ください。使用する変数名は好きな変数名を指定してかまいません。
[05-02-p1.py]
【1】身長(cm)と体重(kg)を入力し、BMIを求めるプログラムを作成してください。
また、BMIの結果から、以下の条件に基づいて画面に表示するようにしてください。
BMI値 | 出力内容 |
---|---|
18.5未満 | 「やせすぎです」と出力 |
18.5以上25.0未満 | 「普通体重です」と出力 |
25.0以上 | 「肥満です」と出力 |
※本来は肥満にもさらに区分けされるのですが、簡素化のため上記としています。 |
<05-02-p1.py実行結果>
【実行結果】
身長(cm)を入力してください:184
体重(kg)を入力してください:77.9
標準体重です
##最後に
今回は、条件を組み合わせた制御構文について見ていきました。ただし、あまり長い条件を書いてしまうと、後でプログラムをメンテナンスする際に読みづらくなるというデメリットもありますので、必要最低限にとどめておきましょう。
このAND、OR、NOT演算は「4章-09」のセットのところに出てきた集合の演算の話に近い内容となっています。ぜひ確認してみてください。
###【目次リンク】へ戻る