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文 などの複合文のブロックはインデントで表現されます。

Link正しいインデントの仕方

では、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値 を返す関数を条件式に指定することもよくあります。例えば、以下のコードは num変数 の値が int型 のオブジェクトの場合、なんらかの処理をする if文 です。

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ジャンケンを実装してみよう

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