G - 1.06.if文・比較演算子・論理演算子 Editorial /

Time Limit: 0 msec / Memory Limit: 0 KB

前のページ | 次のページ

キーポイント

  • if 文を使うと、「指定した条件に当てはまるときだけ処理をする」というプログラムを書ける
    • elifelse を使うと、「条件に当てはまらなかったとき」の処理を書ける
if 条件式1:
    処理1 (条件式1に当てはまるときに実行)
elif 条件式2:
    処理2 (条件式1に当てはまらず、条件式2に当てはまるときに実行)
else:
    処理3 (条件式1にも条件式2にも当てはまらないときに実行)
  • 一般的な比較演算子のまとめ
演算子 意味
x == y xy は等しい
x != y xy は等しくない
x > y xy より大きい
x < y xy より小さい
x >= y xy 以上
x <= y xy 以下
  • 一般的な論理演算子のまとめ
演算子 意味 真になるとき
not 条件式 条件式 の真偽の反転 条件式 が偽
条件式1 and 条件式2 条件式1 が真」かつ「条件式2 が真」 条件式1条件式2 のどちらも真
条件式1 or 条件式2 条件式1 が真」または「条件式2 が真」 条件式1条件式2 の少なくとも片方が真

if 文

if 文を使うと、ある条件が正しいとき(当てはまるとき)だけ処理をするプログラムを書くことができます。
書き方は次のとおりです。

if 条件式:
    処理

条件式が正しいとき、: 以降のインデントが下がった部分の処理が実行され、条件式が正しくないとき、処理は飛ばされます。

次のプログラムは、入力の値が 10 より小さければ「x は 10 より小さい」と出力した後「終了」と出力します。入力の値が 10 より小さくなければ「終了」とだけ出力します。

x = int(input())

if x < 10:
    print("x は 10 より小さい")

print("終了")
入力 1
5
実行結果 1
x は 10 より小さい
終了
入力 2
15
実行結果 2
終了

この例では、まず x = int(input()) の部分で入力された値を整数として変数 x に代入しています。
重要なのはその後です。

if x < 10:
    print("x は 10 より小さい")

この部分は、「もし x < 10x10 より小さい)ならば x は 10 より小さい と出力する」という意味になります。
最後に print("終了") の部分で 終了 と出力します。

x10 より小さくない場合、以下の部分は飛ばされます。

    print("x は 10 より小さい")

そのため、2 つ目の実行例では 終了 とだけ出力されています。

また、以下のプログラムのように if 文の中の処理は複数行にわたって書くこともできます。

x = int(input())

if x < 10:
    print("x は 10 より小さい")
    print(x)

print("終了")

if 文のように、ある条件を満たすかどうかで実行する処理を変えることを条件分岐といいます。
また、「条件式が正しい(条件式が当てはまる)」ことを条件式が真、「条件式が正しくない(条件式が当てはまらない)」ことを条件式が偽といいます。

比較演算子

if 文のところで使った条件式 x < 10 は、比較演算子のひとつです。
一般的な比較演算子には以下の 6 つがあります。

演算子 意味
x == y xy は等しい
x != y xy は等しくない
x > y xy より大きい
x < y xy より小さい
x >= y xy 以上
x <= y xy 以下

xy は等しい」は「x == y」と = を 2 つ繋げたもので表し、「xy は等しくない」は「x != y」と表します。
xy より大きい」「xy より小さい」は、数学での記号と同じく >, < で表します。
xy 以上」「xy 以下」は、数学では \geqq, \leqq のように = を下につけますが、Python では = を右につけることで表します。

次のプログラムは、入力された整数値がどのような条件を満たしているかを出力するプログラムです。

x = int(input())

if x < 10:
    print("x は 10 より小さい")

if x >= 20:
    print("x は 20 以上")

if x == 5:
    print("x は 5")

if x != 100:
    print("x は 100 ではない")

print("終了")
入力 1
5
実行結果 1
x は 10 より小さい
x は 5
x は 100 ではない
終了
入力 2
100
実行結果 2
x は 20 以上
終了

論理演算子

条件式の部分にはもっと複雑な条件を書くこともできます。そのためには論理演算子を使います。

論理演算子には以下の 3 つがあります。

演算子 意味 真になるとき
not 条件式 条件式 の真偽の反転 条件式 が偽
条件式1 and 条件式2 条件式1 が真」かつ「条件式2 が真」 条件式1条件式2 のどちらも真
条件式1 or 条件式2 条件式1 が真」または「条件式2 が真」 条件式1条件式2 の少なくとも片方が真
x, y = map(int, input().split())

if not x == y:
    print("x と y は等しくない")

if x == 10 and y == 10:
    print("x と y は 10")

if x == 0 or y == 0:
    print("x か y は 0")

print("終了")
入力 1
2 3
実行結果 1
x と y は等しくない
終了
入力 2
10 10
実行結果 2
x と y は 10
終了
入力 3
0 8
実行結果 3
x と y は等しくない
x か y は 0
終了

「前の条件が真でないとき」の処理

else 節

else 節は、if 文の後に書くことで、「if 文の条件が偽のとき」に処理を行えるようになります。
書き方は次のとおりです。

if 条件式:
    処理1
else:
    処理2

次のプログラムは、入力の値が 10 より小さければ「x は 10 より小さい」と出力し、そうでなければ「x は 10 より小さくない」と出力します。

x = int(input())

if x < 10:
    print("x は 10 より小さい")
else:
    print("x は 10 より小さくない")
入力 1
5
実行結果 1
x は 10 より小さい
入力 2
15
実行結果 2
x は 10 より小さくない

elif 節

elif 節は「「前の if 文の条件が偽」かつ「elif 節の条件が真」」のときに処理が行われます。
書き方は次のとおりです。

if 条件式1:
    処理1
elif 条件式2:
    処理2

処理2が実行されるのは「条件式1が偽 かつ 条件式2が真」のときになります。

また、elif 節のあとに続けて elif 節や else 節を書くこともできます。
次のプログラムはその例です。

x = int(input())

if x < 10:
    print("x は 10 より小さい")
elif x > 20:
    print("x は 10 より小さくなくて、20 より大きい")
elif x == 15:
    print("x は 10 より小さくなくて、20 より大きくなくて、15 である")
else:
    print("x は 10 より小さくなくて、20 より大きくなくて、15 でもない")
入力 1
5
実行結果 1
x は 10 より小さい
入力 2
30
実行結果 2
x は 10 より小さくなくて、20 より大きい
入力 3
15
実行結果 3
x は 10 より小さくなくて、20 より大きくなくて、15 である
入力 4
13
実行結果 4
x は 10 より小さくなくて、20 より大きくなくて、15 でもない

if 文のネスト

if, elif, else などの節の中にさらに if 文を入れることで、より複雑な条件分岐をすることもできます。

x = int(input())

if x % 2 == 0:
    if x % 3 == 0:
        print("x は 2 の倍数でも 3 の倍数でもある")
    else:
        print("x は 2 の倍数ではあるが 3 の倍数ではない")
else:
    if x % 3 == 0:
        print("x は 2 の倍数ではないが 3 の倍数ではある")
    else:
        print("x は 2 の倍数でも 3 の倍数でもない")
入力 1
12
実行結果 1
x は 2 の倍数でも 3 の倍数でもある
入力 2
14
実行結果 2
x は 2 の倍数ではあるが 3 の倍数ではない
入力 3
15
実行結果 3
x は 2 の倍数ではないが 3 の倍数ではある
入力 4
17
実行結果 4
x は 2 の倍数でも 3 の倍数でもない

比較演算子の連鎖

次のプログラムは、x0 以上 100 以下かどうかを調べるプログラムです。

x = int(input())

if 0 <= x and x <= 100:
    print("x は 0 以上 100 以下です")
else:
    print("x は 0 以上 100 以下ではありません")

上のプログラムの 0 <= x and x <= 100 の部分を、Python では次のプログラムのように 0 <= x <= 100 と書くこともできます。

x = int(input())

if 0 <= x <= 100:
    print("x は 0 以上 100 以下です")
else:
    print("x は 0 以上 100 以下ではありません")

また、a < b < c < d のように 3 つ以上繋げて書いたり、a < b > c のように異なる演算子についても繋げて書くことができます(a < b > ca < b and b > c と同じ意味です)。

💡 ちなみに

この書き方は、あまり濫用するとかえってわかりづらくなってしまうので注意が必要です。例えば、a != b != c と書いたとき、これは a != b and b != c と同じ意味なので、ac が異なるかどうかを判定していません。

問題

リンク先の問題を解いてください。