🔙
🔝

【paiza問題集 解説】
条件式メニュー

文字列の比較

文字列の比較

STEP: 1 比較演算子:==

比較演算子:==

    A, B = map(int, input().split())
    print(A == B)
    

    ( Python3 の場合は True または False と表示されます。)

    これは A と B が 等しいかどうか という意味です。等しければ True、等しくなければ False に化けます。そしてその結果が画面に出力されます。

    比較式については至極簡単に「1章 数式と比較式と代入文」で説明しています。

STEP: 2 比較演算子:!=

比較演算子:!=

    A, B = map(int, input().split())
    print(A != B)
    

    これは A と B が 等しくないかどうか という意味です。等しくなければ True、等しければ False に化けます。そしてその結果が画面に出力されます。

    等号(=)は、常に右側にあるように書きます。=! と書くとエラーになります。

STEP: 3 比較演算子:<

比較演算子:<

    A, B = map(int, input().split())
    print(A < B)
    

    これは A が B より 小さいかどうか という意味です。小さければ True、小さくなければ False に化けます。そしてその結果が画面に出力されます。

    A > B はその反対の意味です。A < BA > B も、 A と B が等しい時は False となります。

STEP: 4 比較演算子:<=

比較演算子:<=

    A, B = map(int, input().split())
    print(A <= B)
    

    これは A が B 以下かどうか という意味です。以下ならば True、以下でないならば False に化けます。そしてその結果が画面に出力されます。

    A >= B はその反対の意味です。どちらも A が B 以上の時は False となります。
    等号(=)は、常に右側にあるように書きます。=< => と書くとエラーになります。

STEP: 5 式の比較

式の比較

    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
FINAL問題 文字列の比較

文字列の比較

    S, T = map(int, input().split())
    print(S == T)
    

    文字列でも == != が同じ意味で使えます。

論理演算子の組み合わせ 3

論理演算子の組み合わせ 3

STEP: 1 AND 演算子

AND 演算子

    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 となります。

STEP: 2 OR 演算子

OR 演算子

    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 となります。

STEP: 3 NOT 演算子

NOT 演算子

    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」で説明しています。

STEP: 4 NOT 演算子 2

NOT 演算子 2

    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 のほうが優先順位が高いため、( ) を付けないと notA == B だけに係ってしまい、正しい結果が得られなくなる恐れがあります。

    【 優先順位 】 比較式 > not > and > or

STEP: 5 論理演算子の組み合わせ

論理演算子の組み合わせ

    A, B, C, D = map(int, input().split())
    print(A == B == C == D)
    

    問題文の補足にすでに答えが書かれていますね。😼
    Python3 では「全てが等しい」ときにはこの様に書くことが出来ます。

STEP: 6 論理演算子の組み合わせ 2

論理演算子の組み合わせ 2

    A, B, C, D = map(int, input().split())
    print(A == B == C or A == C and B == D)
    

    andor が混在する場合、and のほうが先に評価にかけられ、その後 or が評価にかけられます。

    ( ) で囲うと若干読みやすくなります。

    print(A == B == C or (A == C and B == D)) # 私的にはこれが読みやすいと思う
    
    print((A == B == C) or (A == C and B == D))
    
FINAL問題 論理演算子の組み合わせ 3

論理演算子の組み合わせ 3

    A, B, C, D = map(int, input().split())
    print((A == B or C == D) and A == C)
    

    長々と説明されていますが、要するに「優先して評価にかけたい論理演算を ( ) で囲う」ということです。数学の ( ) の使い方と同じことです。もし読みやすくなるなら A == C も ( ) で囲って構いません。でも ( ) だらけになると逆に読みにくくなるので使いすぎに気をつけてくださいね。😽

    【 優先順位 】 比較式 > not > and > or