- 条件分岐
- TrueとFalse
- 値比較演算子
- インデント
『if文』でプログラムを分岐する
人間は ”ある条件” によって行動を決めることがあります。たとえば、
もし晴れなら → 帽子をかぶる
もし曇りなら → 傘を持っていく
さて、プログラムにはどう書けばよいのでしょうか?
「もし〇〇だったら✕✕する」のように、 ”ある条件” を満たした場合にプログラムを動かすにはif文を使います。
この記事では、if文の使いかたを3つのパターンで紹介していきますが、その前に「値比較演算子」を理解しておく必要があります。
if文と一緒に覚える『値比較演算子』!
if文で、 ”ある条件” を満たしたかを判定するのに「値比較演算子」がよく使われます。覚えるのは次の6つだけです。
x < y | xとyより小さければTrue、そうでなければFalse |
x <= y | xとyより小さいか等しければTrue、そうでなければFalse |
x > y | xとyより大きければTrue、そうでなければFalse |
x >= y | xとyより大きいか等しければTrue、そうでなければFalse |
x == y | xとyが等しければTrue、そうでなければFalse |
x != 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('その値は正です。')
プログラムの解説
- input関数で『整数値:』と表示し、入力された値を読込む
- 読み込んだ値(文字列)を int関数で整数値に変換し、変数numberに代入する
- if文で変数numberが0より大きいか判定する
- 変数numberが0より大きい場合は、『その値は正です』と表示する
※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か負です。')
プログラムの解説
- 前プログラムにelse節を追加
- 変数numberが0、もしくは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('プログラムを終了します。')
プログラムの解説
- if節とelse節のあいだに、elif節が追加されました
- elif節で変数numberが0と等しいか判定する
- 変数numberが0と等しい場合は、『その値は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('不正な入力値です!')
まとめ
if文の判定式には、値比較演算子のほかにも「論理演算子」や「条件演算子」なども用いられますので、別の記事で紹介します。
if文はどんなプログラムでも使われる常用テクニックですので、この機会にしっかり覚えておきましょう。
学習のまとめ
- 等号 = は右側に書く
- 判定結果が真であれば True(トゥルー)
- 判定結果が偽であれば False(フォールス)
- 判定結果が真(True)の場合のみ、: の後ろにある文が実行される
- : の次の行には、半角スペース4個分のインデントが必要
- if節、else節のどちらかの文が必ず実行される
- else節の文にもインデントをつける
- elif節には判定式を与える
- elif節は複数加えることができる
- インデントを与えないとif文とは無関係になる
今回は以上です、それではまた!
ー くらしと仕事をワンランク上に ー
以上、YAKUMO(@yakumostyle)でした。
コメント