Python

【Python】if文を使った条件分岐の方法を解説

この記事では、Pythonのif文を使った条件分岐について解説します。

条件分岐とは、指定された条件によって処理を分岐させることを言います。プログラミングのキモとも言える構文なのでしっかりと学んでいきましょう。

ちなみに、C言語などで使われているswitch文は、Pythonには用意されていません。代用する方法は以下の記事を参考にしてください。

Linkswitch文がないので何かで代用しよう!

それでは、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で条件を何個でも追加できる
  • elifelseは省略可能
  • 条件式の後ろの:を忘れないように注意
  • どこかの分岐が処理されると、それ以降の分岐は無視される

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

比較演算子について詳しくは、以下の記事を参照してください。

値を比較する演算子【比較演算子】

関数を使う

bool値を返す関数を条件式に指定することもよくあります。

例えば、isinstance()関数を使って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」です

詳しくは以下の記事を参照してください。

Link三項演算子を使ってif文を1行で記述する

まとめ

この記事では、Pythonでif文を使う方法を解説しました。

今回のおさらい

以下のコードでわからない箇所があったら記事を見直してみましょう!

num = int(input('整数: '))

if num == 0: 
    print('numは0です')
elif num == 1:
    print('numは1です')
else:
    print('0,1以外です')

実行結果

整数: 0
numは0です

整数: 1
numは1です

整数: 3
0,1以外です

if文を使い始めると一気にプログラミング感が増しますね。ジャンケンなんかの遊びも実装できるのでぜひ遊んでみてください!

Linkジャンケンを実装してみよう

それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ