python_learn

2-4:if文

前ページ(2-3:四則演算) | 目次へ戻る | 次ページ(2-5:for・while文)


if文とは「x=0の時に〇〇の処理、xが0以外の時に××の処理」など条件によって場合分けをする時に使います。

if文の書き方

if文の書き方は以下のようなります。

if [条件]:
    # 処理1はif文の条件に当てはまった場合に実行
    [処理1] # 必ず頭に「tabキー」を挿入する
else:
    # 処理2はif文の条件に当てはまらなかった場合に実行
    [処理2] # 必ず頭に「tabキー」を挿入する

if文の後に書いた「条件文」を実行してその結果が条件に合っている場合は「True」、そうでない場合は「False」と判断します。

条件文の結果がTrueの場合はif文直後の条件1が実行されます。

そうでない場合は次の条件である「else」のところにいきます。elseとは「if文の条件以外のすべて」になるので、条件文の結果がFalseの場合はelse文直後の条件2が実行されます。

例えば「x=0の時にYESと表示、xが0以外の時にNOと表示」する場合は以下のような記述になります。

・2-04_01_if_example.py

x = 0 # この場合は結果はYES
# x = 1 # この場合は結果はNO

if x == 0:
    print("YES")
else:
    print("NO")

上記のプログラムをx=0の時に動かすとYES、x=0以外の値で動かすとNOになります。

またif文は「elif」を使うことにより条件分けをすることもできます。

・2-04_02_if_example2.py

x = 0 # この場合は結果はYES
# x = 1 # この場合は結果はhoge
# x = 2 # この場合は結果はNO

if x == 0:
    print("YES")
elif x == 1:
    print("hoge")
else:
    print("NO")

またelifやelseを使わないif文のみでの記述もできます。

if [条件]:
    # 処理はif文の条件に当てはまった場合に実行
    [処理] # 必ず頭に「tabキー」を挿入する

if文は上から順番に処理されます。elif文で条件を書いていたとしても、その前のif文の条件に当てはまってしまった場合は、以降の条件分岐の判断は実行されないので注意が必要です。

例えば以下のような内容を実行すると、最初の「if x == 0」を確認して違うので次のelif文を見に行きますが、そこで「x == 10」と当てはまったので「hoge1」と表示され、以降の「elif x == 1」の条件分岐の判断自体が行われません。

・2-04_03_if_example3.py

x = 10 # この場合は結果はhoge1

if x == 0:
    print("YES")
elif x == 10:
    print("hoge1") # ここの条件に当てはまって終了するため以降の条件分岐は行われない
elif x == 1:
    print("hoge2")
elif x == 2:
    print("hoge3")
elif x == 3:
    print("hoge4")
else:
    print("NO")

if文やelse文の処理のところにif文を書くという入れ子の記述もできますが、あまり入れ子が深くならないようにしましょう。

・2-04_04_if_example4.py

x = 0
y = 1

if x == 0:
    if y = 1:
        print("YES") # x=0, y=1なのでこのYESが表示される
    else:
        print("NO")
else:
    print("hoge")

インデント

ifの条件文を書いた後の処理を書く部分の頭に必ず「Tabを入れる」と書きました。

Tabを入れる(インデントを入れる)ことにより、if文の条件に当てはまった処理がどこまでなのかをソースコード上で見やすくするために他のプログラミング言語でも行っています。

ただしPythonという言語においては「インデント」の数も実行時にチェックする仕様となっているため、インデントの数が合っていないと実行時にエラーになります。

if文の入れ子が深くなるとTabの数も多くなるため、このインデントのチェックに引っかかる可能性が高くなるのとソースコードも読みにくくなるので、入れ子構造が深くならないように記述するようにしましょう。

比較演算子

比較演算子とはif文で使った「==」などのことで、値が等しいか、大きいか、小さいか、以上か、以下か、などを確認する場合に使います。

・比較演算子の一覧

書き方 意味 例の意味
== 等しい x == y xがyと等しい場合True, そうでない場合False
!= 等しくない x != y xがyと等しくない場合True、等しい場合False
> 左側が大きい x > y xがyより大きい場合True、そうでない場合False
< 左側が小さい x < y xがyより小さい場合True、そうでない場合はalse
>= 左側が等しいか大きい x >= y xがy以上の場合True、そうでない場合False
<= 左側が等しいか小さい x > y xがyより以下の場合True、そうでない場合False
is 等しい x is y xはyと等しい場合True, そうでない場合False
is not 等しくない x is not y xがyと等しくない場合True、等しい場合False
in 含まれる x in y xがyに含まれる場合True、そうでない場合はFalse(文字列やリストの場合)
not in 含まれない x not in y xがyに含まれない場合True、含まれる場合False(文字列やリストの場合)

比較演算子は実際に使ってみないとなかなか理解しにくいと思うので、if文の条件式を色々と書き換えて実行してみてください。

ブール演算子

ブール演算子はif文の条件を繋げて書く時などに使います。

・ブール演算子の一覧

書き方 意味 例の意味
and かつ 1 < x and x < 10 xが1より大きい、かつ、10より小さい場合True、そうでない場合False
or または x < 0 and 10 < x xが0より小さい、または、10より大きい場合True、そうでない場合False
not True/Falseの反転 not x == y xとyが等しくない場合True、等しい場合False

以下のように各条件ごとにカッコを付けることもできます。

# xが1より大きく10より小さい、または、yが1より大きく10より小さい場合
if (1 < x and x < 10) or (1 < y and y < 10):
    print("hoge")

ブール演算子についても実際に使って慣れていかないとなかなか理解できないと思うので、実際に書いて実行してみてください。

練習問題

以下のすべての条件を満たす処理をPythonで書いてみてください。

解答例 ・2-04_05_if_practice.py
# xとyの変数には色々な整数の値を入れて確認してみてください。
x = 0
y = -1

if x == y:
    print("x equals y")
elif y <= 0:
    print("y zero or minus")
else:
    if x < 5:
        print("x less than five")

    if 20 <= x and 20 <= y:
        print("x and y over")
    elif (1 <= x and x <= 10) or (1 <= y and y <= 10):
        print("x or y between 0 and 10")

前ページ(2-3:四則演算) | 目次へ戻る | 次ページ(2-5:for・while文)