この記事を読めば、pythonでの条件分岐がかけるようになります。
私たちは人生のあらゆる場面で選択をします。
恐れに基づいて決断を下してはいけません。希望と可能性に基づいて決断するのです
ミシェル・オバマ
といったのは、前アメリカ大統領夫人、ミシェル・オバマさんです。しかし私はこう申したいと思います。
「希望と可能性だけの基づいて決断を下してはいけません。pythonに基づいて決断するのです」
pythonによる条件分岐
条件分岐とは、場合に応じて処理内容を変更するプログラムです。pythonでは、その他多くのプログラミング言語と同じように、「if」を用いて記述されます。
こちらの記事を参考に、pythonの実行環境を作って、一緒に書きながら進めると理解が深まるかと思います。
if文の書き方
if文では条件式が「True」であればその下に続くプログラムが実行されます。True(真)またはFalse(偽)の二つのデータ型を「bool型」といいます。
もしも、Falseであれば、ifの下の処理内容は実行されずにelseの下の処理内容が実行されます。
インデントはTabキー二つ分(スペースキー4つ分)が推奨されています。(Tabキー1つ分でもよいのですが、推奨されていません。)
次の例を見てみてください。
phone = 'Huawei' #phoneという変数にHuaweiという値を格納
if phone == 'Huawei': #phoneとHuaweiが等しいなら
print('ただちに買い替えてください!')
else: #そうでないなら
print('携帯は壊れるまで使いましょう')
#ただちに買い替えてください(←出力結果)
まず、phoneという変数にHuaweiという文字列を格納しました。次のif文での条件式では、二つの値が等しいかどうかを「==」という比較演算子を用いて書いています。
変数として格納したので、両者は当然等しいのです。ですので、if文の下のプログラムが実行され、その時点で条件分岐プログラムは終了します。(else文は実行されません。)
演算子の種類
先ほど少しばかり触れましたが、if文を作るにあたって比較演算子は必要不可欠です。論理演算子は二つの値を比較して、TrueかFalseのどちらかの値を返します。
演算子 | 意味 | 例 | 返ってくる値 |
---|---|---|---|
> | より大きい | 99 > 100 | False |
< | より小さい | 99 < 100 | True |
>= | 以上 | 2 >= 2 | True |
<= | 以下 | 2 <=5 | True |
== | 等しい | 10 == 100 | False |
!= | 等しくない | 10 != 100 | True |
小学校の頃の算数の延長線のような感じがします。直感的にわかりやすいですね。
ここで大切なのは、あらゆる値がTrueかFalseのどちらかになるということです。そして、Trueならif文が実行され、Falseなら次のプログラムに飛ぶのです。
また、if文に使う演算子として、論理演算子というものがあります。より高度な条件式を書くときに使います。
演算子 | 意味 | 例 | 返ってくる値 |
---|---|---|---|
and | かつ | 1==1 and 3==3 | True |
or | あるいは | 1==1 or 1==2 | True |
not | 否定 | not 1==1 | False |
- andでは、その前後に来る条件が両方ともTrueだった場合にTrueを返します。
- orでは、その前後に来る条件のどちらかがTrueだった場合にTrueを返します。
- notでは、そのあとに来る条件がTrueだった場合にFalseを返します。
ここまで来ると、高校一年生の数学レベルになりますね。
elif文
elif文というのをご存知ですか?
先ほど、else文は、if文がFalseだったときに実行されるプログラムを書く、と紹介しました。ところが、if文とelse文だけでは2つの条件分岐しか書けないことになります。
実際は、もっとたくさんの条件で処理内容を別れさせたいので、そのようなときにelif文を記述します。
次のような例を記述してみてください。
bath = 2
if bath > 5:
print('お風呂のお湯は絶対に交換してください!(汚いです)')
elif bath >= 3:
print('お湯は交換することをお勧めします。')
else:
print('もう一回ぐらい使えますね(環境には優しく!)')
#もう一回ぐらい使えますね(環境には優しく!)←出力結果
ふろ水を何日で変えるかは、家庭の文化によって異なるでしょう。上のプログラムは、2日はお湯を変えない文化の家庭を想定しています。bathという変数に、今日は何日目かを示す値を格納しました。
elif文は、if文がFalseだったときに、さらに条件を書くときに使用します。また、elif文は何個でも記述できます。
ただし、Trueが出た時点で条件分岐のプログラムは終了してしまうので、どのような順序でプログラムを記述するかは気を付ける必要があります。
例えば、次のように記述しても、一つ目のelifで条件分岐が終了し、その下のプログラムは実行されません。
bath = 3
if bath > 5:
print('お湯を交換してください')
elif bath >= 3:
#実行される
print('お湯の交換をお勧めします')
elif bath == 3:
#実行されない
print('まだギリギリ使えます')
else:
print('もう一回ぐらい使えますね(環境には優しく!)')
まとめ
以上が条件分岐の簡単な説明です。一つの条件分岐では、簡単なプログラムを作る程度ですが、条件分岐を複数組み合わせれば、より高度なプログラムを組めるようになります。
脳のリソースを割きたくない時、条件分岐プログラムを作ってプログラムに選択をさせれば、私たちはより大切なことに集中できることでしょう。
どうでもよいことはpyhonに任せて、真に考えなければならないことに集中する生活は、効率的なものということができるのではないでしょうか?