遊園地のジェットコースターなどには、「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
に指定した身長を、130
cmから 110
cmに変更するとどうなるでしょう?
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
となる論理演算は、論理積 ともいいます。