遊園地のジェットコースターなどには、「10歳以上で身長は120cm以上の方のみお乗りいただけます」のように、決まった条件で利用者を制限している場合があります。この制限を、Pythonで書いてみましょう。
この条件を分解すると、
- 年齢が 10 またはそれより大きい
- 身長が 120 またはそれより大きい
の2つの条件を満たせば、乗っても良いということになります。
年齢を示すデータを変数 age、身長は変数 height に代入されているとすると、年齢のチェックは <= 記号を使って、次のように書けます。
10 <= age
この式は、ageが10以上の値ならTrueとなり、10未満ならFalseとなります。
身長のチェックは次のように書けます。
120 <= height
この式は、heightが120以上の値ならTrueとなり、120未満ならFalseとなります。
この2つの条件が同時に真なら、搭乗可能ということになります。これをプログラムで書いてみましょう。
Pythonでは、and 演算子で2つの条件が同時に真かどうかを調べられます。
age = 11 # 例として、11歳 身長130cmとする
height = 130
if (10 <= age) and (120 <= height):
print("お乗りいただけます")
else:
print("ご遠慮ください")
and 演算子は、左右に指定された値の両方が True の場合、True を返します。 どちらか一方でも False なら、and 演算子の結果も False となります。
上の例では、if文の条件式として、
(10 <= age) and (120 <= height)
と指定しています。age の値は 11 ですから、10 <= age の結果は True となります。また、height の値は 130 ですから、120 <= height の結果も Trueとなります。どちらの値も True なので、and 演算子の最終的な値は True となります。
ここで、height に指定した身長を、130cmから 110cmに変更するとどうなるでしょう?
age = 11 # 例として、11歳 身長110cmとする
height = 110 # この行を 130 -> 110に変更
if (10 <= age) and (120 <= height):
print("お乗りいただけます")
else:
print("ご遠慮ください")
この場合、10 <= age という比較は True ですが、120 <= height という比較は False となります。片方の値が False
となったので、 and 演算子の最終的な値は False となります。
論理積¶
次のように、変数 A と 変数 B の and 演算を行い、結果を変数 C に代入すると、
C = A and B
変数 C の値は、A と B の値によって次のようになります。
| C | A | B |
|---|---|---|
| False | False | False |
| False | False | True |
| False | True | False |
| True | True | True |
A と B の両方が True のときのみ、結果 C の値が True となることを確認してください。
and のように、すべての入力値が True のときのみ結果が True となる論理演算は、論理積 ともいいます。