if文は最もよく使われるフロー制御文です。
書き方は各言語で違いますが、JavaやPHP、Ruby等、どのプログラミング言語でも使用されますのでif文はしっかり理解すると良いです。
if文について
ここでは、if文の基本からelse文・elif文、さらに番外編として初心者が間違えやすい条件分岐の使い方について解説します。
if文の基本
if文はプログラムの中で条件分岐を行いたい時に使う文です。
指定した条件式が真の時(=条件を満たす時)にだけ処理を実行します。
if文の行末には必ず「:」を記述してください。
次の行はインデント(字下げ)を行って「条件がtrue時の処理」を記述します。
この字下げされたコードの塊をブロックと呼びます。
これがif文を書くときの基本的な形になります。
if文を無理やり日本語化すると「もし条件式が真ならば、ブロックの中のコードを実行してね」ですかね。
実際のコード
>>> if 1 + 1 ==2:
... Print('正解')
...
'正解'
ifの後に条件式を書きます。条件式は「1+1と2が等しいか?」です。
当然、等しいので真となり、ブロックの中にあるprintを実行します。
ここまでは、簡単ですね。
else文
先ほどは、条件が真の時のみブロックの中のコードを実行していました。
条件が偽の時(=条件を満たさない時)も処理を行いたいときはelse文を使います。
if文と同様にelse文も行末には必ず「:」を記述してください。
次の行はインデント(字下げ)を行って「条件がfalse時の処理」を記述します。
実際のコード
>>> if 1 + 1== 4:
... print('正解')
... else:
... print('残念!')
...
残念!
条件式は「1+1と4が等しいか?」です。
当然、等しくないので偽となり、else文のブロックにあるprintを実行します。
elif文
if文とelse文の組み合わせの場合は、条件式が真の場合と偽の場合のどちらか一方だけが実行されていました。
しかし、実際にプログラムを組む時に、多数の条件のうち1つを実行したい場合があります。
そんな時に活躍するのがelif(else ifの略)文です。
elif文は、if文や他のelif文に続けて記述し、直前の条件式が偽の場合に「別の条件式を判定する働き」を持っています。
実際のコード
>>> if 1+1==4:
... print('正解')
... elif 1+2==4:
... print('一問正解。1問不正解')
... else:
... print('2問不正解')
...
2問不正解
番外編:条件分岐の順番を間違えると正しい結果が得られない
複数にわたる条件分岐の順番を間違えると、期待した結果を得られないどころか、致命的なバグにつながることもあります。
間違い例:体重判定プログラム
このプログラムでは、体重を入力すると、体重別に健康から即病院案内まで表示するプログラムです。
実際のコード:weight.py
print('体重は?')
weight = input()
w = float(weight)
if w > 80:
print('ちょっと太り気味です')
elif w > 100:
print('3桁突入!そろろそダイエット')
elif w > 120:
print('即病院にいきましょう')
else:
print('健康です。')
一見、うまく行くようにみえるますが、条件分岐の順番が違うため130を入力すると以下の結果となってしまいます。
python weight.py
体重は?
130
ちょっと太り気味です
130kgであれば「即病院にいきましょう」を表示したいはずなのですが、手前の80kg以上のelifの判定が実行され「ちょっと太り気味です」が表示されています。
このコードの直し方は、体重の大きい順番に条件分岐すれば正しい処理となります。