- トップページ
- 特集PC技術
- Pythonを学ぼう
- 第20回 条件分岐
Pythonを学ぼう
第20回 条件分岐
1.条件分岐とは
これまでの回のプログラムは、上から順に実行してきました。
ですが、プログラムによっては、条件によって処理を分けたい時があります。
それが条件分岐であり、Pythonには条件分岐をするための「if文」という構文があります。
if文のように条件分岐する構文は、Pythonに限らず、他の言語にもあります。
ただし、Pythonは他の言語と異なり、インデントの深さでブロック範囲を決定するという
特徴があります。
2.if文の基礎
if文は次のように記述します。
if 条件式:
条件が真の場合の処理
if文では、ifの後に空白を置いて条件式を記述し、最後にコロン(:)を記述します。
条件式が真になった場合、インデントをした後に記述した処理を実行します。
インデントは、タブでもスペースでもどちらでもかまいません。
使用方法は、次のプログラムを見てください。
# coding: utf-8 a = 2 # 条件が真の場合 if a > 1: print(1) print(2) # 条件が為の場合 if a > 2: print(3) print(4) |
実行結果
1
2
実行結果より、条件式が真になった場合、条件配下の処理を実行することがわかります。
条件式が為になった場合は、条件配下の処理を実行しないことがわかります。
3.else節
条件式が為になった場合の処理を実行するには、elseを使用して次のように記述します。
if 条件式:
条件が真の場合の処理
else:
条件が為の場合の処理
elseの後にはコロン(:)を記述します。
使用方法は、次のプログラムを見てください。
# coding: utf-8 a = 2 # 条件が真の場合 if a > 1: print(1) else: print(2) # 条件が為の場合 if a > 2: print(3) else: print(4) |
実行結果
1
4
4.elif節
条件が複数ある場合は、elifを使用して次のように記述します。
if 条件式①:
条件式①が真の場合の処理
elif 条件式②:
条件式②が真の場合の処理
else:
上記すべての条件に当てはまらない場合の処理
elifは何度も使用できます。
条件式は上から順々に評価していき、条件が真になった場合に、その条件配下の処理を実行します。
すべての条件に当てはまらない場合は、elseがあれば、その配下にある処理を実行します。
使用方法は、次のプログラムを見てください。
# coding: utf-8 a = 2 # 条件が複数の場合 if a == 1: print(1) elif a == 2: print(2) elif a == 3: print(3) elif a == 4: print(4) else: print(5) |
実行結果
2
5.条件式の判定
条件式は、ブール型に変換されてTrueかFalseで評価します。
基本的にPythonでは、1や有に相当するものをTrue、0や無に相当するものをFalseとして評価します。
そのため、Pythonでは、もっと簡単にif文を記述することができます。
例として、次のプログラムを見てください。
# coding: utf-8 # 条件式が1の場合 if 1: print(1) # 条件式が0の場合 if 0: print(0) # 条件式が中身のある文字列の場合 if 'a': print('a') # 条件式が中身のない文字列の場合 if '': print('') |
実行結果
1
a
6.pass文
if文を使用するとき、条件式が真でも何も処理をしたくない時があります。
しかし、Pythonはインデントによるブロック構造のため、
インデントの後に、何かしらの処理を記述しないとエラーとなってしまいます。
そこで、使用するのがpass文です。
pass文は「何もしない」という処理を実行します。
使用方法は、次のプログラムを見てください。
# coding: utf-8 print(u'pass文の実行') # pass文を使用した場合 if True: pass |
実行結果
pass文の実行
実行結果より、条件式が真となっても、pass文のため、何も処理しないことがわかります。
7.複合文
複合文とは、他の文を内部に持った、複数の文からなる処理のことです。
if文は複合文のため、if文の中にif文を記述することができます。
Pythonでは、複合文の範囲をインデントの深さで判断するため、
if文の中にif文を記述した場合は、その都度、インデントの深さを深くする必要があります。
次のプログラムを見てください。
# coding: utf-8 a = 2 # if文の中にif文 if a > 0: if a == 1: print(1) elif a == 2: print(2) elif a == 3: print(3) elif a == 4: print(4) else: print(5) |
実行結果
2
8.三項演算子
Python2.5以降では、三項演算子を扱うことができます。
次の構文を使用します。
条件式が真の時の値 if 条件式 else 条件式が為の時の値
三項演算子を使用すると、if文を簡潔に記述することができます。
使用方法は、次のプログラムを見てください。
# coding: utf-8 # 三項演算子を使用した場合 a = 1 if True else 0 print(a) # 三項演算子を使用しない場合 if True: b = 1; else: b = 0; print(b) |
実行結果
1
1
9.Javaとの比較
Javaのソースコードとの比較をします。
Javaを知っている方は参考にしてください。
Python | Java |
---|---|
# coding: utf-8 # 条件が複数の場合 a = 2 if a == 1: print(1) elif a == 2: print(2) else: print(3) # 条件式が1の場合 if 1: print(1) # 何もしない処理 if True: pass # 三項演算子 b = 1 if True else 0 print(b) |
public class Java20 { public static void main(String[] args) { // 条件が複数の場合 int a = 2; if(a == 1) { System.out.println(1); } else if(a == 2) { System.out.println(2); } else { System.out.println(3); } // 条件式が1の場合はエラーとなるためコメントアウト /* if(1) { System.out.println(1); } */ // 何もしない処理 if(true) { } // 三項演算子 int b = true ? 1:0; System.out.println(b); } } |
コメントの投稿
トラックバックURL
http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1778