STEP: 1 比較演算子:==
比較演算子:==
A, B = map(int, input().split())
print(A == B)
( Python3 の場合は True
または False
と表示されます。)
これは A と B が 等しいかどうか という意味です。等しければ True、等しくなければ False に化けます。そしてその結果が画面に出力されます。
比較式については至極簡単に「1章 数式と比較式と代入文」で説明しています。
A, B = map(int, input().split())
print(A == B)
( Python3 の場合は True
または False
と表示されます。)
これは A と B が 等しいかどうか という意味です。等しければ True、等しくなければ False に化けます。そしてその結果が画面に出力されます。
比較式については至極簡単に「1章 数式と比較式と代入文」で説明しています。
A, B = map(int, input().split())
print(A != B)
これは A と B が 等しくないかどうか という意味です。等しくなければ True、等しければ False に化けます。そしてその結果が画面に出力されます。
等号(=)は、常に右側にあるように書きます。=! と書くとエラーになります。
A, B = map(int, input().split())
print(A < B)
これは A が B より 小さいかどうか という意味です。小さければ True、小さくなければ False に化けます。そしてその結果が画面に出力されます。
A > B はその反対の意味です。A < B も A > B も、 A と B が等しい時は False となります。
A, B = map(int, input().split())
print(A <= B)
これは A が B 以下かどうか という意味です。以下ならば True、以下でないならば False に化けます。そしてその結果が画面に出力されます。
A >= B はその反対の意味です。どちらも A が B 以上の時は False となります。
等号(=)は、常に右側にあるように書きます。=< => と書くとエラーになります。
A, B, C, D = map(int, input().split())
print(A+B == C*D)
算術演算(計算式)が優先され、その後に比較式で評価されます。
A, B, C, D = 5, 7, 3, 4 の時
print(A+B == C*D)
↓
print(5+7 == C*D)
↓
print(12 == C*D)
↓
print(12 == 3*4)
↓
print(12 == 12)
↓
print(True)
True
S, T = map(int, input().split())
print(S == T)
文字列でも == != が同じ意味で使えます。
A, B, C, D = map(int, input().split())
print(A == B and C == D)
比較式を and で繋げると、and で繋げた全ての比較式の評価が True の時に、全体が True となります。
A, B, C, D = 2, 2, 3, 3 の時
print(A == B and C == D)
↓
print(2 == 2 and C == D)
↓
print(True and C == D)
↓
print(True and 3 == 3)
↓
print(True and True)
↓ 全て True なので
print(True)
True
どれか1つでも False があると、全体が False となります。
A, B, C, D = map(int, input().split())
print(A == B or C == D)
比較式を or で繋げると、or で繋げたうちの評価が1つでも True であれば、全体が True となります。
A, B, C, D = 1, 2, 3, 3 の時
print(A == B or C == D)
↓
print(1 == 2 or C == D)
↓
print(False or C == D)
↓
print(False or 3 == 3)
↓
print(False or True)
↓ True が登場したので
print(True)
True
全てが False の時のみ、全体が False となります。
A, B = map(int, input().split())
print(not A == B)
評価は比較式が優先され、その後に not で反転されます。
A, B = 1, 2 の時
print(not A == B)
↓
print(not 1 == 2)
↓
print(not False)
↓
print(True)
True
NOT については「2章 bool型 True と False」で説明しています。
A, B, C, D = map(int, input().split())
print(not (A == B and C == D))
『(A と B が等しい) かつ (C と D が等しい) が真のとき、またそのときに限り 偽 となる条件式を書いてください。』とありますので、まず A == B and C == D
から評価にかけます。そしてその結果を not で反転させます。
このとき、A == B and C == D に ( ) が必要となります。and よりも not のほうが優先順位が高いため、( ) を付けないと not が A == B だけに係ってしまい、正しい結果が得られなくなる恐れがあります。
【 優先順位 】 比較式 > not > and > or
A, B, C, D = map(int, input().split())
print(A == B == C == D)
問題文の補足にすでに答えが書かれていますね。😼
Python3 では「全てが等しい」ときにはこの様に書くことが出来ます。
A, B, C, D = map(int, input().split())
print(A == B == C or A == C and B == D)
and と or が混在する場合、and のほうが先に評価にかけられ、その後 or が評価にかけられます。
( ) で囲うと若干読みやすくなります。
print(A == B == C or (A == C and B == D)) # 私的にはこれが読みやすいと思う
print((A == B == C) or (A == C and B == D))
A, B, C, D = map(int, input().split())
print((A == B or C == D) and A == C)
長々と説明されていますが、要するに「優先して評価にかけたい論理演算を ( ) で囲う」ということです。数学の ( ) の使い方と同じことです。もし読みやすくなるなら A == C
も ( ) で囲って構いません。でも ( ) だらけになると逆に読みにくくなるので使いすぎに気をつけてくださいね。😽
【 優先順位 】 比較式 > not > and > or