Python の if 文
if で条件分岐を行い、インデントで if ブロックを書く
「もしこの条件が正しい (True) ならこの処理を行う。そうでなければ、こちらの処理を行う。」というように、 条件を判断して処理を分岐させるには、if 文を用います。
if 文の形式は次のようにします。
if 条件 :
条件が正しい場合の処理 1 行目 # インデントして記述
条件が正しい場合の処理 2 行目
...
通常の処理 # インデント終了
条件が True の場合に行う処理を if の文字からインデント (字下げ) して記述します。通常は空白文字4文字分インデントします。
インデントが続いているところまでが、条件が正しい場合に行われる処理です。この部分を if ブロックといいます。
次の例では入力された数字が 5 より大きい場合に m is greater than 5. という文字を出力します。それ以外の場合は何もしません。
s = input('Enter number : ')
m = int(s)
if m > 5:
print('m is greater than 5.')
実行すると次のようになります。
Enter number : 8
m is greater than 5.
条件が False の場合に行う処理は else
条件が True ではない (False である) 場合にのみ行いたい処理がある場合には、else に続けて書きます。
else の場合の文のまとまり (else ブロック) も、if ブロックと同様にインデントしている限り続きます。
if 条件 :
条件が正しい場合の処理 1 行目 # インデントして記述
条件が正しい場合の処理 2 行目
...
else:
条件が正しくない場合の処理 1 行目
条件が正しくない場合の処理 2 行目
...
5 と同じかそれより小さい数字の場合にもメッセージを出力してみましょう。
s = input('Enter number : ')
m = int(s)
if m > 5:
print('m is greater than 5.')
else:
print('m is 5 or less.')
実行結果は次のようになります。
Enter number : 3
m is 5 or less.
複数の条件は elif で記述する
条件が複数ある場合は elif キーワードに続けて、2個目の条件を書きます。elif ブロックもインデントで記述します。
if 条件1 :
条件1が正しい場合の処理 1 行目 # インデントして記述
条件1が正しい場合の処理 2 行目
...
elif 条件2 :
条件2が正しい場合の処理 1 行目 # インデントして記述
条件2が正しい場合の処理 2 行目
...
else:
条件が正しくない場合の処理 1 行目
条件が正しくない場合の処理 2 行目
...
条件は上から評価し、最初に True となったブロックのみを実行します。
例えば、次の例では最初の条件は「m は 5 より大きい (m > 5)」、二つ目の条件は「m は 2 より大きい (m > 2)」 となっています。
s = input('Enter number : ')
m = int(s)
if m > 5:
print('m is greater than 5.')
elif m > 2:
print('m is greater than 2.')
else:
print('m is 2 or less.')
もし m が 8 の場合は 5 より大きく最初の条件が True となり、if ブロックが実行されます。elif ブロックや else ブロックは実行されません。
実行例は次のようになります。
Enter number : 8
m is greater than 5.
尚、elif は複数書くことができます。
Python の制御文での条件の書き方
Python の制御文の条件判定では次の演算子を使って条件を記述できます。
大小や同じか否かを判定するための関係演算子は次の種類があります。
演算子 | 意味 |
---|---|
< | より小さい |
<= | 同じか小さい |
> | より大きい |
>= | 同じか大きい |
== | 等しい |
!= | 異なる |
また、条件を組み合わせる論理演算子は次のとおりです。
演算子 | 意味 |
---|---|
and | かつ |
or | または |
not | 否定 |
論理演算子を使って if 文で複数の条件を書く例を示します。
if 条件1 and 条件2 : という風に条件を並べることで、2つの条件を満たした時の分岐を作ることができます。
x = int(input('数字を入力してください: '))
if 10 < x and x % 2 == 0 : # 最初の条件、かつ、二つ目の条件
print( '10 より大きく、かつ、偶数です' )
else:
print( '10 より大きくないかまたは奇数です')
この例では 10 < x (x は 10 より大) という条件と x % 2 == 0 (2 で割った余りが 0) という2つの条件を、 and で繋げることで、これらの2つの条件を同時に満たす場合という条件としています。