目的
コンピュータでデータを処理する場合に,ある条件を満たす場合にはある処理を,満たさない場合には別の処理をしたいことがある.ここでは条件によって処理内容を変えることができる条件分岐を学ぶ.
説明
ifによる条件分岐
ジェットコースターに乗るときに身長の制限があるとする.身長が140cm以上のときはジェットコースターに乗れると判断するには,以下のように記述すればよい.
これは「もし(if)身長heightが140cm以上なら,”OK”と表示する」という意味であり,この場合身長heightは170cmであるから,以下のように「OK」と表示される.
身長が140cmに満たない場合に乗れないと判断するには,以下のように記述すればよい.
これは「もし(if)身長heightが140cm以上なら”OK”と表示し,それ以外(else)なら”NG”と表示する」という意味である.この場合身長は130cmであるから,以下のように「NG」と表示される.
身長が高すぎてもジェットコースターに乗れない場合には以下のように記述すればよい.
これは「もし(if)身長heightが200cm以上なら”NG (too tall)”と表示し,それ以外でもし(else if)身長heightが140cm以上なら”OK”と表示し,それ以外(else)なら”NG (too short)”と表示する」という意味である.この場合,身長は210cmであるから,以下のように「NG (too tall)」と表示される.
条件の型
if文ではifの後ろに条件を記述する.以下のように,条件(height >= 140)にconditionという名前をつけ,条件conditionの値と型を表示してみよう.
以下のように表示されることから,この場合の条件の値はTrueであり,条件の型はbool型であることがわかる.
以下のように,条件を満たさない場合には
条件の値がFalseになることがわかる.
このようにTrueかFalseの2つの値を表現するための型がbool型であり,条件分岐の条件部分に使われることが多い.
比較演算子
比較演算子とは2つの値を比較するときに使用する演算子であり,上記の例では「>=」が比較演算子である.比較演算の結果はbool型の値となるため,条件分岐の条件部分に使われることが多い.大小比較を行う比較演算子には以下のものがある.
- x > y
- xがyより大きい
- x < y
- xがyより小さい
- x >= y
- xがy以上である
- x <= y
- xがy以下である
値が等しいか等しくないかを判定する比較演算子には以下のものがある.
- x == y
- xとyが等しい
- x != y
- xとyが等しくない
これらは以下のように,数値データにも文字列データにも使用できる.
また,リストやタプル等にある要素が含まれるかどうかを判定するには,以下のような比較演算子を使う.
- x in y
- 要素xがyに存在する
- x not in y
- 要素xがyに存在しない
7月から9月が夏だとして,今月が夏であるかどうかを判定するには,以下のようにすればよい.
この例では,今月が8月であるため,夏と表示される.
論理演算子
bool型の値に対して演算を行う論理演算子には以下のものがある.
- x and y
- xかつy(論理積)
- x or y
- xまたはy(論理和)
- not x
- xでない(否定)
身長制限が140cm以上200cm以下であるジェットコースターに乗れるかどうかを判定するには,以下のようにすればよい.
この場合,身長は170cmであるから以下のように「OK」と表示される.
比較演算子の連結
上記の例では条件に「height >= 140 and height <= 200」と記述した.Pythonではこれを「140 <= height <= 200」と簡潔に記述することができる.
リストのデータに対して条件判定
以上の例では,1つのデータに対して条件判定を行ったため,正しく判定できたかどうかを確認するには値を変えて実行する必要があった.ここでは,複数のデータからなるリストに対し繰り返し条件判定を行い,正しく判定できるかどうかを確認しよう.
例えば,ジェットコースターの列に並んでいる人の身長のリストを作成し,1人ずつ身長制限を満たすかどうか判定するには,以下のようにすればよい.
以下のように,正しく判定ができていることがわかる.
課題
課題0
様々な視力からなるリストに対して,視力が1.0以上なら「目が良い」と表示するプログラムを作成せよ.
課題1
様々な視力からなるリストに対して,視力が1.0以上なら「目が良い」,1.0未満なら「目が悪い」と表示するプログラムを作成せよ.
課題2
様々な人のテストの点数からなるリストに対して,点数が60点以上なら「合格」,60点未満なら「不合格」と表示するプログラムを作成せよ.
課題3
様々な人のテストの点数からなるリストに対して,点数が90点以上なら「S」,80点以上90点未満なら「A」,70点以上80点未満なら「B」,60点以上70点未満なら「C」,40点以上60点未満なら「D」,40点未満なら「E」と表示するプログラムを作成せよ.
課題4
身長と体重からなるリストの複数人のリストを作成し,BMIを求め,BMIが18.5以上25未満の場合「ふつう」と表示するプログラムを作成せよ.BMIは「体重[kg] / (身長[m]の2乗)」で求めよ.
課題5
身長と体重からなるリストの複数人のリストを作成し,BMIを求め,BMIが18.5未満の場合「やせている」,18.5以上25未満の場合「ふつう」,25以上の場合「太っている」と表示するプログラムを作成せよ.BMIは「体重[kg] / (身長[m]の2乗)」で求めよ.
課題6
様々な時間(0時から23時まで)のリストを作成し,その時間が朝かどうかを判定するプログラムを作成せよ.
課題7
様々な時間(0時から23時まで)のリストを作成し,その時間が朝・昼・夕方・夜・深夜のいずれかを判定するプログラムを作成せよ.
課題8
様々な月(1月から12月まで)のリストを作成し,その月が春・夏・秋・冬のいずれかを判定するプログラムを作成せよ.
課題9
様々な月(1月から12月まで)のリストを作成し,その月が春学期・夏休み・秋学期・春休み中かどうかを判定するプログラムを作成せよ.