Categories: Python

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

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

条件分岐とは、指定された条件によって処理を分岐させることを言います。

例えば、ある変数の値が偶数の時に特定の処理をさせたり、0以下の時は処理をさせなかったり、色々な条件で処理を分岐させることができます。

プログラミングのキモとも言える構文なのでしっかりと学んでいきましょう!

ちなみに、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で条件を何個でも追加できる
  • 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 

このように比較演算子を使うことで値を比較して条件分岐することができます。

関数を使う

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」です

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

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

まとめ

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

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

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

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

View Comments

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago