この記事では、Pythonのif文を使った条件分岐について解説します。
条件分岐とは、指定された条件によって処理を分岐させることを言います。
例えば、ある変数の値が偶数の時に特定の処理をさせたり、0以下の時は処理をさせなかったり、色々な条件で処理を分岐させることができます。
プログラミングのキモとも言える構文なのでしっかりと学んでいきましょう!
ちなみに、C言語などで使われているswitch
文はPythonには用意されていません。代用する方法は以下の記事を参考にしてください。
それでは、if
文の使い方を見ていきましょう!
if文の書き方
if
文は、if...elif...else
を使って以下のように記述されます。
if 条件式1:
# 条件式1が True の時に処理され、False の場合は無視されるブロック
elif 条件式2:
# 条件式1が False で、条件式2が True の時に処理されるブロック
elif 条件式3:
# 条件式1,2が False で、条件式3が True の時に処理されるブロック
・
・
・
else:
# 全ての条件式が False の時に処理されるブロック
条件式については後述します。
- elifで条件を何個でも追加できる
- elifとelseは省略可能
- 条件式の後ろの「:」を忘れないように注意
- どこかの分岐が処理されるとそれ以降の分岐は無視される
Pythonでは、if
文などの複合文のブロックをインデントで表現します。{}
などは使わないので注意してください。→ 正しいインデントの仕方
if
文の書き方がわかったところで次に「条件式」について見ていきましょう!
条件式
条件式には、比較演算子を使って「~以上だったら処理する」などの条件を指定したり、bool
値を返す関数などを指定します。
比較演算子を使う
比較演算子とは、値を比較するための演算子です。比較演算子を用いて値を比較することで真ならTrue
、偽ならFalse
を返します。
例えば、ある変数が0の場合に、何かしらの処理をしたいなら以下のように記述します。
num = 0
if num == 0:
print('numは0です')
num == 0
の部分でnum
変数の値が 0かどうかを==
演算子を使って比較しています。
比較演算子一覧
Pythonには、以下のような比較演算子が用意されています。
演算子 | 意味 |
---|---|
x == y | xとyが等しければTrue |
x != y | xとyが等しくなければTrue |
x > y | xがyよりも大きければTrue |
x < y | xがyよりも小さければTrue |
x >= y | xがyよりも大きいか等しければTrue |
x <= y | xがyよりも小さいか等しければTrue |
x in y | xがyに含まれていればTrue |
x not in y | xがyに含まれていなければTrue |
x is y | xとyが同一のオブジェクトならばTrue |
x is not y | xとyが同一のオブジェクトでなければTrue |
比較演算子について詳しくは、以下の記事を参照してください。
Link値を比較する演算子【比較演算子】
簡単な例を見てみましょう。
# 年齢を格納する変数
age = 20
if age == 20:
# age が 20 だと処理される
print(age)
if age < 80:
# age が 80 未満だと処理される
print(age)
このように比較演算子を使うことで値を比較して条件分岐することができます。
関数を使う
bool
値を返す関数を条件式に指定することもよくあります。
例えば、isinstance()
関数を使ったりします。isinstance()
関数は、第一引数に渡された値の型が第二引数で渡された型と同じならTrue
、異なればFalse
を返す関数です。
以下のコードでは、num
変数の型がint
型ならば処理を実行します。
num = 0
if isinstance(num, int):
print('numはint型です')
実行結果
numはint型です
複数の条件を組み合わせる
論理演算子を使うことで複数の条件を組み合わせることができます。
論理演算子 | 意味 |
---|---|
x and y | xを評価し、偽ならその結果を返す。それ以外の場合は、yを評価し、その結果を返す。 |
x or y | xを評価し、真ならその結果を返す。それ以外の場合は、yを評価し、その結果を返す。 |
and(かつ)
and
は、つなげた条件式が全てTrue
の場合、True
が返されます。例えば、「20以上かつ80未満」のときになんらかの処理を実行したい場合は以下のように記述します。
num = 21
if num >= 20 and num < 80:
print('numは20以上80未満です')
実行結果
num は、20以上かつ80未満です
or(または)
or
は、つなげた条件式が1つでもTrue
の場合、True
が返されます。例えば、「20未満または80以上」のときになんらかの処理を実行したい場合は以下のように記述します。
num = 19
if num < 20 or num >= 80:
print('numは20未満、または80以上です')
実行結果
num は、20未満、または80以上です
ネストされたif文
if
文ブロック内にif
文を記述することでより複雑な条件分岐をすることができます。
val = 6
if val % 2 == 0:
if val >= 0:
print('0以上の偶数です')
else:
print('0以下の偶数です')
実行結果
0以上の偶数です
上記のコードでは、1つ目のif
で偶数かどうかを判別し、2つ目のif
で0以上かどうかを判別しています。
このように、if
文を重ねることで分岐を増やし、複雑な条件を処理することができます。しかし、if
文をネストしすぎると可読性が下がってしまうので注意してください。
そういう時は、論理演算子を使って複数の条件をつなげたり、セットとin
演算子を使って条件をまとめることで記述をすっきりさせることができます!
num = 1
# numが0か1の場合、処理するif文を
if num == 0 or num == 1:
print('numは0または1です')
# setとin演算子を使ってすっきり記述できる
if num in {0, 1}:
print('numは0または1です')
三項演算子
三項演算子を使うことで1行で条件分岐を表現することができます。
変数 = (条件式がTrueの時に代入される値) if (条件式) else (条件式がFlaseの時に代入される値)
試しに簡単なサンプルを見てみましょう!
val = 1
s = 'valは「1」です' if val == 1 else 'valは「1以外」です'
print(s)
実行結果
valは「1」です
詳しくは以下の記事を参照してください。
まとめ
この記事では、Pythonでif文を使う方法を解説しました。
if
文を使い始めると一気にプログラミング感が増しますね。ジャンケンやおみくじなんかの遊びも実装できるのでぜひ遊んでみてください!
それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ