for文と同じくプログラムを作成するに当たり、条件によって処理を変えていく際に使用するのが「条件分岐」です。
以下ではPythonで条件分岐を表現する場合に使用する「if文」についての動作と使い方をまとめます。
【Python】条件分岐「if文」の動作と使い方まとめ
そもそも条件分岐はどういうものかというと、条件分岐とは「条件によって処理を変える」ことを意味します。
たとえば、テレビを購入する場合、予算が20万円とします。
購入したいと考えているテレビが30万、次の購入候補となるテレビが18万だとすると、後者になります。
この場合だと、予算の20万が条件となり、評価した結果によって購入する対象のテレビが変わります。
これが条件分岐です。
if文を使った条件分岐の処理
Pythonでは条件分岐をする場合「if文」を利用します。
この「if文」の使い方ですが、ifの後ろに半角スペースを一つ空け条件となる式を書きます。
インデントされている行が分岐後の処理となります。
以下のように、左から、「ifキーワード」、「式」を下記、最後に「:」コロンでif文の構文を作成します。
if test_point >= 90: 実行したい処理
また、複数の条件で分岐させたい時は「elif」、「else」を使用します。
それ俺の利用用途は以下となります。
- elif :条件を付け加える時に使用
- else :「if」や「elif」でつけた条件のどれにも当てはまらない時の処理
if test_point >= 90: 実行したい処理① elif test_point >= 75: 実行したい処理② else: 上記の条件どれにも当てはまらないときの処理
また、if文の処理は、上から順番に処理されます。
どれか一つの条件に当て嵌まった時点でそのブロック内の処理が実行され、どれにも当てはまらない場合、elseの処理をします。
「if文」の式と比較演算子の書き方
「if文」では、算数などで使用する不等式と似たものを使用します。
以下の式の例で言うと、test_pointの変数の値は90よりも大きいまたは等しいかと言う条件となります。
※test_pointが90以上か?
if test_point >= 90: print('Pass!')
このように値を比較するための記号のことを、「比較演算子」と言います。
また、比較演算子は数値以外の比較も可能です。
例えば以下では、name変数の値は’ヒロミチ’と言う名前を一致しているかと言う条件となります。
※nameが「ヒロミチ」と一致するか?
if name == 'ヒロミチ': print('あなたの名前が一致しました。')
比較演算子はよく使うので以下で一覧にまとめました。
比較演算子一覧 | |
---|---|
演算子 | 意味 |
> | 〜より大きい |
> | 〜より小さい |
>= | 以上 |
<= | 以下 |
== | 等しい |
!= | 等しくない |
複数条件による「if文」の書き方
if文では複数条件を組み合わせた式を作ることができます。
2つ以上の条件に当てはまる式を作成したい場合は、「and」条件を使用します。
以下では、ポイントが90点以上で、nameが「ヒロミチ」の場合に実行される条件となります。
if test_point >= 90 and name == 'ヒロミチ': print('Pass!')
また、複数条件のうち、どれかの条件に当てはまればいい場合は「or」条件を使用します。
if name == 'ヒロミチ' or name == 'コウキ': print('あなたの名前がメンバーに一致しました。')
「if文」を使用した、テストの結果から評価を出力するプログラム
ここでは、if文を使った応用のプログラムを作ります。
よく使われるプログラムで、テストの結果プログラムを作成します。
以下では、それぞれの点数をみて、「good」、「pass」、「fail」で評価するプログラムとなります。
まずは、ファイルを作成し、テスト用の結果データを準備します。
今回は複数の入力ができるように、split()メソッドを利用して、リスト化をします
また、len()関数により、「point_list」の値の個数を取得します。
これにより、リストにいくつの値が入力されたかを出力し、「good」と「success」で割合の計算をします。
例) score * 100 * 0.9 ↓ 30, 50, 90 と3つの値を入力した場合 3 * 100 * 0.9
次に評価するための条件を以下で書いていきます。
条件分岐は以下となります。
- 合計点が9割以上 → 「good」
- 合計点が7割以上 → 「success」
- それ以外(以下) → 「fail」
最後にprint()関数で結果を表示します。
test_point = input('点数をカンマ区切りで入力: ') point_list = test_point.split(',') total = 0 for point in point_list: total += int(point) score = len(point_list) good = score * 100 * 0.9 success = score * 100 * 0.7 if total >= good: evaluation = 'good' elif total >= success: evaluation = 'sccess' else: evaluation = 'fail' print('点数の評価は{}です。'.format(evaluation))
出力結果
$ python3 if_test.py 点数をカンマ区切りで入力: 50,50,60 点数の評価はfailです。 $ python3 if_test.py 点数をカンマ区切りで入力: 90,90,90 点数の評価はgoodです。 $ python3 if_test.py 点数をカンマ区切りで入力: 80,80,80 点数の評価はsccessです。
if文による条件分岐は、これからも必ず使っていく重要なプログラムの考え方となります。
エンジニアのオンライン学習
エンジニアにおすすめのオンライン教材比較 | |
ITエンジニアが自宅で学習ができるオンラインスクール比較 | |