Pythonのif文の書き方【条件分岐】

241, 2021-05-03

目次

Pythonのif文の書き方

プログラミング言語のPythonには制御文の1つとしてif文があります。
if文を使うと条件によって処理を分岐することが出来るため、より複雑なプログラムを作れるようになります。

結論から言うと、Pythonのif文は↓のように書きます。

name = 'cat'

if name == 'cat':
    print('nyan')
elif name == 'dog':
    print('wan')
else:
    print('gau')
# nyan

この記事ではPythonのif文の書き方(if, elif, else)を解説します。
具体的には↓を見ていきます。

  • 条件分岐とは?

  • if文の構造

  • 条件式

  • 文字列による分岐

  • 整数による分岐

  • オブジェクトによる分岐

  • 複数行の条件式

条件分岐とは?

条件分岐とはその名もずばりで「条件によって処理を分岐する」ことを指します。
if文で行えるのはこの条件分岐になります。

条件分岐とは例えば、文字列の変数があるとします。
そしてこの変数の値によって違う処理を書きたいとします。
たとえば変数の値がcatだったら猫用の処理を、逆に変数の値がdogだったら犬用の処理をと言う風にです。
このように条件によって処理が分岐していくことから、これら一連の処理を条件分岐と呼びます。

プログラムは条件分岐の塊です。
if文を使っていないプログラムは逆に珍しいと言っても良いでしょう。
それほどif文はPythonに限らずプログラミングにおいてメジャーな制御文と言えます。

if文の構造

if文の構造を見てみます。

Pythonのif文は↓のような構造になっています。

if 条件式:
    処理
(・ v ・)

シンプルな構造だね

↑の構造の場合、条件式の部分には処理を実行する条件を書きます。
この条件式の中がTrueと見なせる場合は、コロン以降のインデントされた処理が実行されます。
Falseの場合はインデントされた処理は実行されません。

elif

if文には普通のifの他にelifelseも組み合わせて使うことができます。
たとえばelifを組み合わせると↓のような構造になります。

if 条件式1:
    処理1
elif 条件式2:
    処理2

if文にelifを組み合わせると↑のような構造になります。
↑の場合、まず最初に条件式1が実行され判定されます。
条件式1の結果がTrueであれば処理1が実行されます。
この場合if文はここで終了します。

条件式1の結果がFalseであればelifが実行されます。
elif条件式2が実行され判定されます。
elifの条件式も同様にTrueであれば処理が実行されます。ここでは処理2がそうです。

つまり↑のif文の場合↓のような流れで処理が流れて行きます。

  • 条件式1の判定

  • 条件式1の結果がTrueなら処理1を実行しif文終了

  • 条件式1の結果がFalseならelifを実行

  • 条件式2の結果がTrueなら処理2を実行しif文終了

  • 条件式2の結果がFalseなら何もせずにif文終了

elifif文に複数付けることができます。

if 条件式1:
    処理1
elif 条件式2:
    処理2
elif 条件式3:
    処理3

↑のようなif文の場合も上のほうから順に処理が実行されていきます。
最初に条件式1を実行し、結果がFalseなら条件式2を実行し、結果がFalseなら条件式3を……と言う風にです。

(^ _ ^)

秘儀無限増殖

else

if文にはelifの他にelseも付けることができます。
elseは条件式がFalseだった場合に実行されます。

if 条件式:
    処理1
else:
    処理2

↑のようなif文の場合、最初に条件式が実行され判定されます。
条件式の結果がTrueなら処理1が実行されます。
条件式の結果がFalseならelseが実行され、処理2が実行されます。

このようにelseifの条件式がFalseのときに必ず実行されます。

elifとelse

今までに扱ってきたelifelseは組み合わせて使うことができます。
ただしelseは一番最後に1つしか付けられません。

if 条件式1:
    処理1
elif 条件式2
    処理2
else:
    処理3

↑のようなif文の場合、最初に条件式1が実行され判定されます。
結果がFalseだったら次に条件式2が実行され判定されます。
その結果もFalseだったら最終的にelse処理3が実行されます。

条件式

条件式には比較演算子を使うことができます。
これは==!=, <>, <=>=, notis, inなどです。
またandorを使うことで複数の条件式を繋げることができます。

==

==は左辺と右辺が等しいかどうか判定します。

左辺 == 右辺

左辺と右辺が等しければTrue, 等しくなければFalseになります。

!=

!=は左辺と右辺が等しくないかどうか判定します。

左辺 != 右辺

左辺と右辺が等しくなければTrue, 等しければFalseになります。

<, <=

<は左辺が右辺より小さいときにTrue, <=は左辺が右辺以下の時にTrueになります。
また<は左辺が右辺以上の時にFalse, <=は左辺が右辺より上の時にFalseになります。

左辺 < 右辺
左辺 <= 右辺

これらの演算子<<=の違いは「より小さい」か「以下」の違いです。

>, >=

>は左辺が右辺より大きいときにTrue, >=は左辺が右辺以上の時にTrueになります。
また>は左辺が右辺以下の時にFalse, >=は左辺が右辺より小さいときにFalseになります。

左辺 > 右辺
左辺 >= 右辺

これらの演算子の違いも「より大きい」か「以上」の違いです。

not

notは式の結果を反転します。
式の結果がTrueであればFalseに、FalseであればTrueにします。

not 式

is

isは左辺と右辺のアイデンティティーが一致していたらTrue, 一致していなかったらFalseになります。

左辺 is 右辺

アイデンティティーとは組み込み関数のid()で確認できる値のことです。
またnotを組み合わせると一致していなければTrue, 一致していたらFalseになります。

左辺 is not 右辺

in

inは左辺が右辺に含まれているかチェックし、含まれていたらTrue, 含まれていなければFalseになります。

左辺 in 右辺

多くの場合、右辺はリストやタプルなどになります。
またnotを組み合わせると、含まれていなかったらTrue, 含まれていたらFalseになります。

左辺 not in 右辺

and

andは右辺と左辺がTrueであればTrueになります。

左辺 and 右辺

andを使うことで複数の条件式を組み合わせることができます。

a == b and c == d
a == b and c == d and e == f
a < b and c > d
a <= b and c >= d
a is and c in d

or

orは左辺と右辺のどちらかがTrueであればTrueになります。

左辺 or 右辺

orを使うことで複数の条件式を組み合わせることができます。

a == b or c == d
a == b or c == d or e == f
a < b or c > d
a <= b or c >= d
a is or c in d

文字列による分岐

if文を使って文字列の値を見て条件分岐してみます。

name = '太郎'

if name == '太郎':
    print('こんにちは、太郎')
else:
    print('誰ですか?')
# こんにちは、太郎

↑の場合、name太郎であれば「こんにちは、太郎」と出力されます。
name太郎以外であれば「誰ですか?」と出力されます。

name = '太郎'

if name != '太郎':
    print('太郎を知りませんか?')
else:
    print('太郎、会いたかったです')
# 太郎、会いたかったです

↑の場合、name太郎であれば「太郎、会いたかったです」と出力されます。
name太郎以外であれば「太郎を知りませんか?」と出力されます。

names = ['花子', 'ポチ', '太郎']

if '太郎' in names:
    print('太郎が含まれています')
# 太郎が含まれています

↑の場合、names太郎が含まれていたら「太郎が含まれています」と出力されます。

整数による分岐

整数による分岐を見てみます。

n = 10

if n > 5:
    print('nは5より上です')
# nは5より上です

↑の場合、n10の場合に「nは5より上です」と表示されます。

a = 5
b = 10

if a < 10 and b > 5:
    print('OK')
# OK

↑の場合、a5, b10の場合に「OK」と表示されます。
a < 10」はTrueで「b > 5」もTrueなのでandの結果はTrueになるからです。

n = 0

if not n:
    print('nは0です')
# nは0です

↑の場合、整数0nnotで反転して判定しています。
整数0は条件式ではFalseになります。それをnotで反転しているため結果はTrueになります。

a = 5
b = 10

if a < b < 15:
    print('OK')
# OK

↑の場合、結果は「OK」になります。
↑のように<, <=, >, >=などの演算子は連結して書くことができます。
↑の場合は「abより小さくてb15より小さい」という意味になります。
andなどで連結するよりも簡潔に書くことができます。

オブジェクトによる分岐

オブジェクトの分岐を見てみます。
たとえばオブジェクトがNoneかどうか確認したい場合です。

obj = object()

if obj is None:
    print('オブジェクトはNoneです')
else:
    print('オブジェクトは存在します')
# オブジェクトは存在します

↑の場合、objNoneだった場合は「オブジェクトはNoneです」と表示されます。
objNoneでなければ「オブジェクトは存在します」と表示されます。

複数行の条件式

Pythonではデフォルトでは複数行の条件式を書けないようになっています。
複数行の条件式を書きたい時はバックスラッシュで改行をエスケープするか、括弧で囲います。

a = b = c = d = 1

if a == b and \
   c == d:
   print('OK')
# OK
a = b = c = d = 1

if (a == b and
    c == d):
    print('OK')
# OK

おわりに

今回はPythonのif文について見てみました。
if文を使えるようになると複雑なプログラムも作れるようになります。

(^ _ ^)

"もし"私が神だったら、この世に大福の雨を降らす

(・ v ・)

大福神



この記事のアンケートを送信する