Pythonのif文の書き方【条件分岐】
目次
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
の他にelif
やelse
も組み合わせて使うことができます。
たとえば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文終了
elif
はif
文に複数付けることができます。
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
が実行されます。
このようにelse
はif
の条件式がFalse
のときに必ず実行されます。
elifとelse
今までに扱ってきたelif
とelse
は組み合わせて使うことができます。
ただしelse
は一番最後に1つしか付けられません。
if 条件式1: 処理1 elif 条件式2 処理2 else: 処理3
↑のようなif
文の場合、最初に条件式1
が実行され判定されます。
結果がFalse
だったら次に条件式2
が実行され判定されます。
その結果もFalse
だったら最終的にelse
の処理3
が実行されます。
条件式
条件式には比較演算子を使うことができます。
これは==
や!=
, <
や>
, <=
や>=
, not
やis
, in
などです。
またand
やor
を使うことで複数の条件式を繋げることができます。
==
==
は左辺と右辺が等しいかどうか判定します。
左辺 == 右辺
左辺と右辺が等しければ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より上です
↑の場合、n
が10
の場合に「nは5より上です」と表示されます。
a = 5 b = 10 if a < 10 and b > 5: print('OK') # OK
↑の場合、a
が5
, b
が10
の場合に「OK」と表示されます。
「a < 10
」はTrue
で「b > 5
」もTrue
なのでand
の結果はTrue
になるからです。
n = 0 if not n: print('nは0です') # nは0です
↑の場合、整数0
のn
をnot
で反転して判定しています。
整数0
は条件式ではFalse
になります。それをnot
で反転しているため結果はTrue
になります。
a = 5 b = 10 if a < b < 15: print('OK') # OK
↑の場合、結果は「OK」になります。
↑のように<
, <=
, >
, >=
などの演算子は連結して書くことができます。
↑の場合は「a
はb
より小さくてb
は15
より小さい」という意味になります。
and
などで連結するよりも簡潔に書くことができます。
オブジェクトによる分岐
オブジェクトの分岐を見てみます。
たとえばオブジェクトがNone
かどうか確認したい場合です。
obj = object() if obj is None: print('オブジェクトはNoneです') else: print('オブジェクトは存在します') # オブジェクトは存在します
↑の場合、obj
がNone
だった場合は「オブジェクトはNoneです」と表示されます。
obj
がNone
でなければ「オブジェクトは存在します」と表示されます。
複数行の条件式
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 ・) | 大福神 |