プログラムの基本的な制御構造(逐次実行、条件分岐、繰り返し)の一つである条件分岐の書き方について説明します。他の多くのプログラミング言語と同様、Pythonではif文を使って条件分岐を記述します。単純なif文の書き方からより複雑なif文の書き方までサンプルプログラムとともに説明していきます。
単純な条件分岐の書き方
原則として、プログラムは上から順番に実行されていきます。これを逐次実行あるいは順次実行と呼びます。しかし、プログラムの途中で条件によって処理を分岐させたいことがあります。これを条件分岐と呼び、Pythonではif文を使って記述します。
簡単な例から見て行きましょう。「ある数が2で割り切れるかどうか」という条件を判定し、割り切れる場合、即ち条件が真(true)の場合に「偶数です」と表示したいとします。Pythonではif文を使って次のように記述します。%は割り算の余りを求める演算子です。また、「==」は左辺と右辺が等しいことを表す演算子です。
1 2 |
if num % 2 == 0: print "偶数です" |
このように、ifの後に条件式とコロン(:)を記述し、その次の行から条件式が真である場合に実行したい処理(複数行でも可)をインデントをつけて記述します。他のプログラミング言語では、実行させたい処理のまとまりをブロックとして{}などで表しますが、Pythonではブロックをインデントを使って表すことに注意してください。
このように、Pythonにおける一般的なif文の書き方は次のようになります。
1 2 3 4 |
if 条件式: 条件式が真の場合に実行したい処理1 条件式が真の場合に実行したい処理2 ・・・ |
より複雑な条件分岐の書き方
if-else文
上の例では、「ある数が2で割り切れる」という条件が真である場合は「偶数です」と表示されますが、割り切れなかった場合、即ち条件が偽(false)の場合は何も表示されません。そこで、ある数が2で割り切れる場合は「偶数です」、割り切れない場合には「奇数です」と表示することを考えてみます。これはif-else文を使って次のように書くことができます。elseは「それより前にでてきた条件式がひとつも真でない場合」という意味です。
1 2 3 4 |
if num % 2 == 0: print "偶数です" else: print "奇数です" |
このように、ifに続く条件式が偽であった場合に実行したい処理をelse:の後にインデントをつけて記述します。
if-elif文
より細かな条件分岐を行うためにはelifを使います。次のサンプルプログラムは、ある数が3で割り切れる場合はfizzを、5で割り切れる場合はbuzzを表示するプログラムです。
1 2 3 4 |
if num % 3 == 0: print "fizz" elif num % 5 == 0: print "buzz" |
このプログラムは、変数numの値が3の倍数の時にfizzを表示し、5の倍数の時にはbuzzを表示します。ただし、elifに続く条件式は上のifに続く条件式が偽であった場合にしか判定されないので注意が必要です。例えば、numの値が15の時、numは3で割り切れるため最初のifに続く条件式が真と判定され、fizzが表示されます。elifに続く条件式の判定は行われないため、buzzは表示されません。
if-elif-else文
elseは一つも条件式が真でなかった場合という意味なので、ある数が3でも5でも割り切れない場合にnot fizz or buzzと表示するプログラムは次のようになります。
1 2 3 4 5 6 |
if num % 3 == 0: print "fizz" elif num % 5 == 0: print "buzz" else: print "not fizz or buzz" |