条件分岐 if文の使い方
if文の基本形
a = 5
if a > 1:
print("aは1より大きい")
上記のコードの場合、
「aが1より大きいとき、処理を実行」する基本的な条件分岐です。
もちろんは「aに代入されている 5 は、1 より大きい」ので、if文内の処理は実行されます。
これを応用して、さまざまな条件分岐を簡単に書くことができます。
else文を使って条件分岐
a = 5
if a > 10:
print("aは10より大きい")
else:
print("aは10より大きくない")
このようにif文に続けて、
else文を付け加えることで if の条件に当てはまらなかった場合の処理を明記することができます。
上記のコードの場合、
「aは10より大きい」の if の条件に当てはまらないので、else文の処理が実行されます。
elif文を使った複数の条件分岐
a = 5
if a > 10:
print("aは10より大きい")
elif a > 3:
print("aは3より大きい")
else:
print("aは10より大きくなく、3よりも大きくない")
elif文を用いることで、複数の条件分岐を一度に書くことができます。
if文での条件分岐では、処理によっては非常に複雑な条件分岐を行うことが起こり得ます。
elif文を使えば、複数の条件分岐をひとつのif文の中で完結できるので便利です。
上記のコードの場合、「aは10より小さく、3より大きい」ため、elif文の処理が実行されます。
elif文を使う際の注意点
elif文を用いて複数条件分岐を行うときには注意が必要です。
それは、
if文の構文内で最初に当てはまったものだけが実行される
ということです。
例えば、
a = 5
if a > 10:
print("aは10より大きい")
elif a > 3:
print("aは3より大きい")
elif a > 1:
print("aは1より大きい")
else:
print("aは10より大きくなく、3よりも大きくなく、1よりも大きくない")
のような、4つの条件分岐をひとつのif文で書いた場合、
「aは3よりも大きいし、1よりも大きい」ですが、
プログラム上では一番最初に条件に一致する「aは3より大きい」しか実行されません。
複数の条件分岐を使用する際は、ひとつのif分の中では一つの処理しか実行されないことに注意しましょう。
演算子を活用した if 文の応用
否定を表す not
if文では否定を表すnotを用いて、処理を書くこともできます。
a = 5
if not a > 1:
print("aは1より大きくない")
if not 文の多用は避けよう
if not文をむやみに使うのは避けましょう。
コードが煩雑になり読みにくくなるため、必要なとき以外はif文で書くことをおすすめします。
例として、以下のような読みにくい if not 文を書いてみますね。
a = 5
if not a < 10:
print("aは10より小さくない")
elif not a > 1:
print("aは1より大きくない")
elif not a < 3:
print("aは3より小さくない")
else:
print("何が何だかわからない!!")
このようなif not文を使った複数条件分岐が書いてあったら、どの処理が実行されるのかとてもわかりにくいですよね…。
自分で書いていてもわからなくなりました。笑笑
ちなみに答えは 「aは3より小さくない」が実行されます。
複数条件を同時に満たすand
pythonの if 文では and 演算子を用いて、条件を組み合わせて書くことができます。
例えば、
a = 100
if a > 10 and a < 200:
print("aは10より大きい、かつ200より小さい")
and は複数の条件を両方とも満たす場合に処理を実行する役割を持ちます。
上記のコードでは、「aは10より大きいし、かつ200より小さい」ので処理が実行されます。
いずれかの条件を満たす or
どちらか一方の条件を満たす場合に処理を実行させることもできます。
a = 100
if a > 10 or a > 200:
print("aは10より大きい、もしくは200より大きい")
二つの条件のどちらか一方を満たせば良いので、
「aは200よりは小さいですが、10よりは大きい」ため処理が実行されます。
複数条件分岐では and や or を活用しよう
プログラムを書く際、どうしても条件分岐が多くなることがあります。
そういうときには、and や or を効果的に活用しましょう。
and や or を活用することでプログラムコードがすっきりし、読みやすいコードを書くことができます。
仮に以下のように、「a, b, c すべてが100より大きいときのみ、処理を実行させたい」とします。
a = 110
b = 150
c = 135
if a > 100 and b > 100 and c > 100:
print("a, b, c はすべて100より大きい")
これを and を使わずに書くとこうなります。
a = 110
b = 150
c = 135
if a > 100:
if b > 100:
if c > 100:
print("a, b, c はすべて100より大きい")
このような階段構造のプログラムは階層が増えるほど読みづらくなります。
プログラムコードの行数も過剰に増えてしまいますし、何より処理が遅くなるという問題もあるのです。
条件が複数ある場合は、and や or を活用できないか工夫してみてください。
論理演算子について
pythonの if 文では条件式にはさまざまな演算子を利用できます。
論理演算子とその意味について、以下にまとめて記しておきます。
(引用 : python公式ドキュメント)
論理演算子 | 意味 |
---|---|
a == b | 両辺の値が等しい(aとbが等しい) |
a != b | 両辺の値が等しくない(aとbが等しくない) |
a > b | 左辺が右辺より大きい(aがbより大きい) |
a < b | 左辺が右辺より小さい(aがbより小さい) |
a >= b | 左辺が右辺以上(aがb以上) |
a <= b | 左辺が右辺以下(aがb以下) |
a is b | 両辺が同じオブジェクト(aとbが同一オブジェクト) |
a is not b | 両辺が異なるオブジェクト(aとbが異なるオブジェクト) |
a in b | 左辺が右辺に含まれる(aがbに含まれる) |
a not in b | 左辺が右辺に含まれない(aがbに含まれない) |
まとめ
今回は if 文について初心者でもわかるよう、例を交えて解説してみました。
Pythonを学び始めたばかりの人は、どうしても構文の書き方を忘れてしまうと思います。
ときどき見返して思い出せるよう記事にしてみたので、
もし「if 文ってどう書くんだっけ?」と忘れてしまったときにはこの記事を参考にしてみてください。
他にもPython学習におすすめの記事があるので、ぜひ参考にしてみてください。