Python入門② if文とelif文,else文 このエントリーをはてなブックマークに追加

Pythonのif文,elif文,else文(条件分岐)でできること

今回はPythonのif文の使い方をまとめてみたいと思います.

if文の簡単な例とよくあるコロンとインデントのエラー

たとえば以下のようなプログラムを実行します.
if 1 == 1:
    print('Hello World')
これを実行すると以下のような出力が得られます.
Hello World


if文を使う時に多いエラー!コロン:

ifの条件式を書いた後に「:」をつけなければエラーが出力されます.たとえば以下のようなプログラムです.
if 1 == 1
    print('Hello World')
他のプログラミング言語も使っている人に間違いが多いです,ご注意...

if文を使う時に多いエラー!インデント

インデントとは,プログラムを書くときに,その構造がわかりやすいように一行さげておくことです.以下はエラーのあるプログラムです.
if 1 == 1:
print('Hello World!')
ifの条件分岐下で実行したいprint関数がインデントされていないので,"expected an indented block"というエラーが出力されます.

等しいことは==で表す,代入演算子=との違い

いま,1と1が等しいことを判定するために「==」を使いました.普段の数学とは違う感覚かと思います.「=」を使ってしまうとそれは代入の意味になります.よって正しく判定してくれます.

1==1が返す値とは?

ifの直後に1==1と書いてありますが,これが何を表しているのでしょうか.実はこれは以下のプログラムを実行するとわかります.
print(1 == 1)
この出力が以下のようになります.
True
では,両辺が等しくないような場合,たとえば,
print(1 == 0)
を実行すると,
False
と出力されます.つまり,if文は後ろの式のTrue,False判定して分岐するということです.

不等号を用いた比較方法

まとめると以下のようになります.≠と等号を含む不等号の表記方法が特に覚えておく必要があります.(以下はプログラムではないです)
プログラム中  数学的な表記
x == y       x=y
x != y       x≠y
x > y        x>y
x < y        x<y
x >= y       x≧y
x <= y       x≦y
それぞれの論理式が正しければ,True,間違って入ればFalseを返すことになります.

変数を用いた比較とelse文の使い方

以下のようなプログラムを実行します.
i = 2
if i > 1:
    print('i is larger than 1')
出力結果は
i is larger than 1
となります.1行目でiに1を代入していて,i > 1は正しいので,if文の中身が実行されました.

もし,if文の条件を満たさなかったら?

以下のプログラムを実行します.
i = 2
if i < 1:
    print('i is smaller than 1')
これを実行しても何も出力されません.ifの条件式がFalseだからです.このような時にはどうすればよいでしょうか.
i = 2
if i < 1:
    print('i is smaller than 1')
elif i > 1:
    print('i is larger than 1')
これを実行すれば,
i is larger than 1
と出力されます.elifというのはelse ifの略ですね.では,以下の場合はどうでしょう.
i = 1
if i < 1:
    print('i is smaller than 1')
elif i > 1:
    print('i is larger than 1')
これは何も出力してくれません.iが1のときにも判定するようにしたければ,たとえばelif文を使えば,
i = 1
if i < 1:
    print('i is smaller than 1')
elif i > 1:
    print('i is larger than 1')
elif i == 1:
    print('i is equal to 1')
を使えばよいです.でも他に場合分けもないですし,最後にもう一回条件を追加するのもなんだか面倒ですね.

else文の使い方・例外処理でバグの防止

先ほどのプログラムで,
i = 1
if i < 1:
    print('i is smaller than 1')
elif i > 1:
    print('i is larger than 1')
else:
    print('i is equal to 1')
というように6行目の条件分岐をelseで済ませることができます.

else文のいいところ

例外処理という問題があります.というのも,想定外の入力というものが来た時,プログラムが誤作動を起こす可能性があります.そのとき,else文で想定外の入力に対する対応を決めておくと,バグを防ぐことができます.

たとえば,強制的にプログラムを終了させるプログラムを仕込んでおくとか.
このエントリーをはてなブックマークに追加