プログラミングには制御構文の代名詞でもある条件分岐。今回はPythonで条件分岐であるif文を学びましょう。
条件分岐とは?
条件分岐は言葉だけだと難しく聞こえますが、読んで字のごとく、単に条件によって分かれる境目を指します。もっと簡単に言えば、「もし、○○なら、xx」の構図だと考えましょう。
ifの基本構文
まず冒頭にifと記述し、条件式、コロン(:)、インデントして命令文を書きます。ifの条件に当てはまらない場合を記述する際は、ifと同じレイヤーでelse、コロンと書き、インデントして命令文を書きます。
if 条件式: 命令文 else: 命令文
様々なサンプルを見た方が理解が早いので、以下ざっと例を書きました。それぞれ確認していきましょう。
テストの点数でメッセージを変える場合:
score = 30
if score >= 80:
print('素晴らしい!')
else:
print('勉強が全てではないよ(^^)')
勉強が全てではないよ(^^)
この例では、変数score(=点数と見立てている)の値が80以上の場合、「素晴らしい!」と表示させ、そうでない場合は「勉強が全てではないよ(^^)」と表示させるプログラムです。
次は、分岐点を今度は3つにしたい場合の例です。その場合には、elifを使用します。
score = 60 if score >= 80: print('素晴らしい!') elif score >= 50: print('よく頑張りました!') else: print('勉強が全てではないよ(^^)') よく頑張りました!
elifの使い方はifの場合と同じです。 elifと書いたら条件式を記述し、コロン。インデントとして命令文です。上記のケースでは、80点以上は「素晴らしい!」、50点以上は「よく頑張りました!」、それ以外、つまり0から49点は、「勉強が全てではないよ(^^)」と表示させるプログラムです。
特定の値が含まれているかどうか
例えば特定のリストの中にある値が含まれていれば○○というプログラムを作りたい場合はこうなります。
food = ['タピオカ', 'たこ焼き', '鯛焼き','卵'] trend = 'タピオカ' junk = 'ハンバーガー' if trend in food: print('トレンド商品がラインナップされています。') if not junk in food: print('ジャンクフードがラインナップされていません。') トレンド商品がラインナップされています。 ジャンクフードがラインナップされていません。
例えば商品ラインナップ変数foodに現在取り扱っているフードメニューがあるとします。また、トレンド商品としてタピオカ、ジャンクフードとしてハンバーガーが設定されているとします。一つ目のif関数は変数foodの中にtrend変数のタピオカが含まれていれば、「トレンド商品がラインナップされています。」と表示せよという命令文です。
2つ目のif関数は、変数foodの中にjunk変数のハンバーガーが含まれていなければ、「ジャンクフードがラインナップされていません。」と表示せよという命令文です。いかがでしょうか、そんなに難しくはないですよね。
何か入っていればTrueを返す
また、何か変数の中に入っていればとりあえずTrueと返すif文が次の例です。
something = 'あるよ' if something: print('あるね') else: print('ないね') あるね
これを次の通り、notで表現すると、「何も入っていなかったら」という条件になるので、elseを返します。
something = 'あるよ' if not something: print('あるね') else: print('ないね') ないね
比較演算子と論理演算子
ここで条件式のバリエーションを増やすために、比較演算子と論理演算子について理解を深めましょう。
比較演算子
中学生の頃に習ったあれです。
種類 | 記号 |
等しい | == |
等しくない | != |
超 | > |
未満 | < |
以上 | >= |
以下 | <= |
含む | in |
論理演算子
同様に中学で習ったベン図ですね。
種類 | 記号+例 | 返り値 |
aもbも満たす | a and b | True もしくは False |
a または bを満たす | a or b | True もしくは False |
aを満たさない | not a | True もしくは False |
if関数で論理演算子を用いた際の文脈では、TrueもしくはFalseの場合に命令文が実行されるという構図です。