Python の if else 文は、ある条件を満たす場合と満たさない場合に、行う処理を分けたい時に使います。
このページでは、この if else 文について、
- 条件分岐の流れと if else 文の書き方
- 具体的な使い方
- if else 文を一行で書ける場合とその書き方
を解説しています。
非常に頻繁に使うものなので、しっかりと抑えておきましょう。
if else 文の学習の前に「Pythonのif文を使った条件分岐の基本と応用」で、if 文の基礎を抑えておきましょう。
1. if else 文とは
if else 文は、「ある条件を満たす場合は処理 A を実行し、条件を満たさない場合は処理 B を実行する」というものです。
英語の if は「もし ~ ならば」、else は「でなければ」という意味があります。例えば、
“If it is true, he must be joking, or else he is insane.”
は、「もし、それが本当なら冗談に決まっている。そうでなければ、彼は正気ではない。」という意味になります。
これと同じで if else 文は、「もし○○なら A だ。そうでなければ B だ。」という処理を行います。
下図をご覧頂くと流れをイメージできると思います。
単純な if 文は、条件式が True の場合のみ処理を実行し、False の場合は何も実行しないというものでした。つまり、「もし○○なら A を実行する。」ということのみ決めていて、そうでない場合は何も決めていないということですね。
一方で、if else 文は、「もし○○なら A を実行する。そうでない場合は B を実行する。」というように、条件を満たす時の処理と、満たさない時の処理を、別々に指定することができるのです。
それでは if else 文の書き方を見てみましょう。
if 条件式 :
条件式が True の場合の処理 #半角空白4文字のインデント
else:
条件式が False の場合の処理 #半角空白4文字のインデント
まず、 if 文で、「もし○○なら」の条件式を書き、その下に半角4文字分のインデントを入れて、条件を満たす場合に行う処理を書きます。
次に、インデントを入れずに else: を書きます。そして else のすぐ下に、半角4文字分のインデントを入れて、if 文の条件式を満たさない場合(「でなければ」の場合)の処理を書きます。
2. if else で条件分岐を作る
この if else 文を使うと、例えば、次のようなコードを書くことができます。18才より年齢が下だと免許取得不可、それ以外の場合だと免許取得可と判定するプログラムです。
'''random モジュールの randint 関数を読み込みます。'''
from random import randint
'''randint 関数で 10 から 30 の中からランダムに数値を作ります。'''
age = randint(10,30)
'''ここからが if 文です。18才より下を自動ではじきます。'''
if age < 18:
print(f"{age}才は免許取得可能年齢ではありません。")
else:
print(f"{age}才は免許取得可能年齢です。次のチェックに進んで下さい。")
最初に、randomモジュールを読み込んで、randint()という指定の範囲に収まる数値を、実行の度にランダムに返す関数を使っています。モジュールに関しては「Pythonのモジュールについて」でご確認ください。
このコードの if 文を抜き出して簡略化したものが以下です。
if age < 18:
print("免許取得不可")
else:
print("免許取得可")
「もし年齢が18才より下なら免許取得不可」、「それ以外の場合は免許取得可」と読めますね。このように、プログラミングだと難しく考えずに、ただの英語だと考えると、とても分かりやすいです。
以下は、年齢が21才だった場合です。
'''random モジュールの randint 関数を読み込みます。'''
from random import randint
'''randint 関数で 10 から 30 の中からランダムに数値を作ります。'''
age = randint(10,30)
'''ここからが if 文です。18才より下を自動ではじきます。'''
if age < 18:
print(f"{age}才は免許取得可能年齢ではありません。")
else: #あ
print(f"{age}才は免許取得可能年齢です。次のチェックに進んで下さい。")
if else 文は、このように、条件を満たす場合と満たさない場合に別々の処理を行うことができます。
3. if else 文を一行で書く
ここまでは、if else 文の使い方を解説してきました。ここでは、if else 文を、さらに簡潔で分かりやすいコードにする方法をお伝えします。
Python では if else 文を一行で簡単に書くことができる場合があります。例えば、以下のように 2 つの値を比較して、条件に合う方を、変数に代入したい場合です。
if a >b :
bigger = a
else :
bigger = b
a と b のうち大きい方を、変数 bigger に代入するというコードです。このような場合は、次のように一行で表すことができます。
bigger = a if a > b else b
以下が使用例です。
'''randomモジュールのインポート'''
from random import randint
a = randint(0, 100)
b = randint(0, 100)
'''if else文'''
bigger = a if a > b else b
print(f"{a}と{b}では、{bigger}が大きい")
このような演算子は、三項演算子といって、他のプログラミング言語では ?: を使って、
bigger = a>b ? a:b
と書きます。Python の書き方の方がはるかに分かりやすいですよね。
4. まとめ
このように if else 文を使うと、条件に応じて、別々の処理を書くことができるようになります。また、条件を満たすか満たさないかによって、変数に代入する値を調整するようなコードを書きたい場合は、一行で書くことができます。
一行で書く方法は、見落としがちですが、簡潔で分かりやすいコードを書くには、ぜひ抑えておきたいものです。
この機会に覚えておきましょう。
コメント