【Python攻略】条件分岐ってなに? ~ if、else、elif を使ってみよう ~

Python入門
スポンサーリンク
この記事でPythonの何が学べる?
  • 条件分岐
  • TrueとFalse
  • 値比較演算子
  • インデント

 

スポンサーリンク

『if文』でプログラムを分岐する

人間は ”ある条件” によって行動を決めることがあります。たとえば、

もし晴れなら → 帽子をかぶる

もし曇りなら → 傘を持っていく

 

さて、プログラムにはどう書けばよいのでしょうか?

 

「もし〇〇だったら✕✕する」のように、 ”ある条件” を満たした場合にプログラムを動かすにはif文を使います。

 

この記事では、if文の使いかたを3つのパターンで紹介していきますが、その前に「値比較演算子」を理解しておく必要があります。

 

\ 現場で助かる!Python逆引き大全 /
スポンサーリンク

if文と一緒に覚える『値比較演算子』!

if文で、 ”ある条件” を満たしたかを判定するのに「値比較演算子」がよく使われます。覚えるのは次の6つだけです。

 

< y xとyより小さければTrue、そうでなければFalse
<= y xとyより小さいか等しければTrue、そうでなければFalse
> y xとyより大きければTrue、そうでなければFalse
>= y xとyより大きいか等しければTrue、そうでなければFalse
== y xとyが等しければTrue、そうでなければFalse
!= y xとyが等しくなければTrue、そうでなければFalse

 

ポイントは、演算子 <= や != で使う等号 = は右側に書くことです。=< や =! のように、逆にするとエラーになるので注意しましょう。

 

TrueとFalseって?

値比較演算子で判定した結果が、真であれば True(トゥルー)、偽であれば False(フォールス)が生成されます。

 

True、もしくは Falseに判定することで、「もしTrueだったら✕✕する」「もしFalseだったら✕✕する」と ”ある条件” によって、プログラムの分岐(ぶんき)が可能になるのです。

 

書き方は違いますが、if文はどんなプログラム言語でも使われます。

考えかたは一緒ですのでしっかり覚えていきましょう。

  • 等号 = は右側に書く
  • 判定結果が真であれば True(トゥルー)
  • 判定結果が偽であれば False(フォールス)

if文を使ってみよう①:『インデント』は半角スペース4個分?

それでは、実際に if文を使ってみましょう。if分は次のように書きます。

if 式:
   文

 

今回は、読み込んだ値が正なら「その値は正です。」を表示させるプログラムを書いていきます。

 

次のようにソースコード書いて、プログラムを実行してください。

# 読み込んだ整数値は正の値か?

number = int(input('整数値:'))

if number > 0:
    print('その値は正です。')
プログラムの解説
  1. input関数で『整数値:』と表示し、入力された値を読込む
  2. 読み込んだ値(文字列)を int関数で整数値に変換し、変数numberに代入する
  3. if文で変数numberより大きいか判定する
  4. 変数number0より大きい場合は、『その値は正です』と表示する
    ※0より小さい場合は、何も表示されません

実行結果

▼5 と入力した場合の実行結果 ※『その値は正です。』と表示されます

整数値:5
その値は正です。

 

▼-5 と入力した場合の実行結果 ※何も表示されていません。

整数値:-5

 

if文の解説

本プログラムのif文は、if からprint関数までとなります。

if number > 0:
    print('その値は正です。')

 

if と :(コロン)に囲まれた if number > 0: が式で、その結果が真(True)になった場合のみ、: の後ろにある文の print(‘その値は正です。’) が実行されます。

 

なお、: の次の行にはインデントが必要です。インデントは字下げのことで、行の先頭にスペースをいれることをいいます。

 

スペース1個でもプログラムは動作しますが、半角スペース4個分いれるのが一般的。全角スペースはエラーの原因になるので注意してください。

 

  • 判定結果が真(True)の場合のみ、: の後ろにある文が実行される
  • : の次の行には、半角スペース4個分のインデントが必要

if文を使ってみよう②:『else』でプログラムを分岐する?

前プログラムは、正ではない値を読み込んだ場合はなにも表示されませんでしたね? 負の値を読み込んだ場合のプログラムを書くには、else(エルス)節を使います。

if 式:
   文
else:
   文

 

さきほどのソースコードを修正して、『その値は0か負です。』と表示できるように変更しましょう。

 

次のようにソースコード書いて、プログラムを実行してください。

# 読み込んだ整数値は正の値か負の値か?

number = int(input('整数値:'))

if number > 0:
    print('その値は正です。')
else:
    print('その値は0か負です。')
プログラムの解説
  1. 前プログラムにelse節を追加
  2. 変数number、もしくは0より小さい場合は『その値は0か負です。』と表示する
    ※前プログラムの重複箇所の解説は省略

実行結果

▼5 と入力した場合の実行結果 ※『その値は正です。』と表示されます

整数値:5
その値は正です。

▼-5 と入力した場合の実行結果 ※『その値は0か負です。』と表示されます

整数値:-5
その値は0か負です。
else節の解説

本プログラムは、「if節」と「else節」の2つで構成されています。(前プログラムは、if節のみで構成されていたというわけです)

▼if節

if number > 0:
    print('その値は正です。')

▼else節

else:
    print('その値は0か負です。')

 

条件の真偽によって異なる処理をしたい場合は、if文にelse節をつけけると2つの文のいずれか一方が必ず実行されます。

 

else節は「~でなければ」という意味で、判定式の結果が真であれば if節の文が実行され、そうでなければ(偽であれば)else節の文が実行されます。

 

  • if節、else節のどちらかの文が必ず実行される
  • else節の文にもインデントをつける

if文を使ってみよう③:『elif』で複雑なプログラムも楽チン?

if文は、真偽の判定で2つに分けるだけでなく、elif節 で無限に分岐させることもできます。

 

if 式:
   文
elif 式:
   文
else:
   文

 

前プログラムでは、0が入力された場合も負の値と同じ処理をしていました。今回は、elif を使って独立した処理を作ってみましょう。

 

次のようにソースコード書いて、プログラムを実行してください。

# 読み込んだ整数値の符号を表示

number = int(input('整数値:'))

if number > 0:
    print('その値は正です。')
elif number ==0:
    print('その値は0です。')
else:
    print('その値は負です。')
print('プログラムを終了します。')
プログラムの解説
  1. if節とelse節のあいだに、elif節が追加されました
  2. elif節で変数numberが0と等しいか判定する
  3. 変数number0と等しい場合は、『その値は0です。』と表示する
    ※前プログラムの重複箇所の解説は省略

実行結果

▼5 と入力した場合の実行結果

整数値:5
その値は正です。
プログラムを終了します。

▼0 と入力した場合の実行結果

整数値:0
その値は0です。
プログラムを終了します。

▼-5 と入力した場合の実行結果

整数値:-5
その値は負です。
プログラムを終了します。
elif節の解説

ここまでに、if節、else節、elif節と登場しましたが、if文はこれらのまとまりをいいます。

 

elif節は、else if の略で「~でなくて、もしも~なら」という意味です。書き方は if節と同様に、判定式を与えます。

 

さて、最終行にあるprint関数を見るとインデントがないことに気づいたでしょうか?インデントを与えないことで、それより前の if文とは無関係の文になります。

 

なので、正の値、0、負の値のいずれの実行結果にも表示されます。インデントをつけると、負の値を入力した場合のみに表示されるので試してみてください。

 

  • elif節には判定式を与える
  • インデントを与えないとif文とは無関係になる

おまけ

次のように、elif節は何個でも与えることができます。

# if文の使いかた(おまけ)

n = int(input('1~5のなかで好きな数字は?:'))

if n == 1:
    print('当たり')
elif n == 2:
    print('ハズレ')
elif n == 3:
    print('ハズレ')
elif n == 4:
    print('ハズレ')
elif n == 5:
    print('ハズレ')
else:
    print('不正な入力値です!')
\ Python入門の定番といえばコレ! /

まとめ

 

if文の判定式には、値比較演算子のほかにも「論理演算子」や「条件演算子」なども用いられますので、別の記事で紹介します。

 

if文はどんなプログラムでも使われる常用テクニックですので、この機会にしっかり覚えておきましょう。

 

学習のまとめ
  • 等号 = は右側に書く
  • 判定結果が真であれば True(トゥルー)
  • 判定結果が偽であれば False(フォールス)
  • 判定結果が真(True)の場合のみ、: の後ろにある文が実行される
  • : の次の行には、半角スペース4個分のインデントが必要
  • if節、else節のどちらかの文が必ず実行される
  • else節の文にもインデントをつける
  • elif節には判定式を与える
  • elif節は複数加えることができる
  • インデントを与えないとif文とは無関係になる

 

今回は以上です、それではまた!

 

ー くらしと仕事をワンランク上に ー
以上、YAKUMO(@yakumostyle)でした。

 

関連記事:【Python初心者向け】2種類の『入門書』があることを知らないと挫折します。

コメント