こんにちは、うしまる(@usitubo)です。
この記事では、Pythonの条件分岐(if)について解説していきます
条件分岐とは?
プログラミングは、基本的に上から下に向かって順番に実行されていきます。その結果、プログラムは毎回同じことを寸分違わず実施してくれるのですが、それだけだと決まりきったことしかできなくなってしまいます。
人がなにかしようとしたとき、常に同じ状況とは限りません。
朝起きて、さぁおでかけするぞってなったとき、晴れていればいつもの持ち物を持ってでかければ良いですが、もし空に怪しい雲が立ち込めていたら?
傘を持っていこうかな?と思いません?
同じようにプログラムもより人間に近い処理ができるように、普段は傘は持っていかないけれど、雨が振りそうだったら持っていこうみたいな処理を作れたら素敵ですよね。
それが条件分岐処理というものになります。
では、実際にPython上で条件分岐を試してみましょう!
Pythonにおける条件分岐処理のポイント
if文は複合文の仲間
Pythonの条件分岐で使用するのは以下の3種類です。
elif
else
条件を設定することができるのは”if“と”elif“です。”else“は”if“や”elif“の条件に合わなかった場合の処理を設定したいときに使用します。
次の章で具体的に解説していきますが、この条件処理の中に、さらに処理を記載していくことが可能です。このようにさらに処理を記載していくことができる文をPythonでは、複合文(compound statement)と呼ばれています。
条件で処理を変えたいときに使う
条件分岐はその名の通り、なにか条件の違いで処理を変化させたいときに使用します。
例えば、車でAT車と呼ばれる自動で変速してくれる車があったとします。車は最初加速するときはギアが一番大きいものになりますが、加速するに連れて小さいものにシフトしていきます。
だいたいの車は、通常加速時は、時速何キロになっていたらギアをシフトするみたいな処理になっていて、うしまるの乗っているCX-3はよく64km/hを超えるとギアが変わります。
こういったときは64km/h未満のときは、ギアはそのまま。64km/hになったらギアを変更するといった具合に外部要因で条件が変わってきたら処理を変更したいときにこの条件分岐処理を使用します。
条件は真偽で判定される
条件分岐処理では、設定した条件を真偽で判定します。真偽というと難しい表現になってしまいますが要するに○か✕かという話ですね。
真(○)は、条件を満たしているとき
偽(✕)は、条件を満たしていないとき
真偽という言葉はプログラムをやっているとPythonに限らずお目にかかる内容なので詳しく知っておきたいかたはこちらの記事も参考にしてみてください。
Pythonで条件分岐を使ってみる
if文で条件分岐をしてみよう
ではさっそくVSCodeを使って条件分岐を実装してみましょう。
Pythonでの記載方法をまとめてみましたので確認ください。
[条件式1]~[条件xx]といくつでも条件を設定することができます。もちろんifだけでも問題ありません。2つ以上の条件を設定したいときは”elif”を使って条件を設定しましょう。そして条件をいくつか設定したけれど、その条件以外のときも処理をしたい場合は”else”を使いましょう。if [条件式1] :
[条件式1が”真”のときのコードブロック]elif [条件式2]:
[条件式2が”真”のときのコードブロック]elif [条件式3]:
[条件式3が”真”のときのコードブロック]…
else:
[すべての条件式が”偽”のときのコードブロック]
それぞれ条件を満たしたときはその中のコードブロックに記載された処理が実行されます。もちろんその中にさらに”if”文を設定するともできますが、あまりネストが深くなる処理は、実際の開発現場ではあまり推奨されないので気をつけてください。
では、実際に動かしてみましょう!
コードはこちら
#Pythonで条件分岐処理を使ってみよう! #変数定義 pattern = 0 #パターン 0:何もしない 1:開ける 2:??? door = 0 #ドアの状態 ?=2, 開=1, 閉=0 if pattern == 0 : print("扉が閉まってる") print("でも何もしない") elif pattern == 1 : print("扉が閉まってる") print("鍵で開けよう") door = 1 else : print("扉が閉まってる") print("鍵を開けy・・・あれ?") door = 2 print("鍵は壊れた") print('ドアの状態を確認') print(door)
では、まずパターン0のifで設定したときの動作をみてみましょう。
赤枠で囲んだ場所が実行結果です。今回はpattern = 0を設定して処理が実行されたので、ifの条件の部分で真となる実行結果となりました。もちろんこのときのコードブロックには、変数doorを変更するような処理は無いため、実行結果としても変数door=0のままでした。
次は変数pattern = 1のときの動作をみていきましょう。
次は、変数pattern = 1となりましたのでelifの条件で真となりました。このコードブロックでは変数door = 1に変更する処理を入れていますので0→1に変数が変更され、赤枠の実行結果では変数door = 1となりました。
次は変数pattern = 2のときの実行結果をみてみましょう!
変数pattern = 3に合致する条件は、実装上には明記されていません。ただしelseは他の条件式に合致しないものすべてが通るルートとなりますので変数pattern = 0もしくは1以外はすべてこちらのコードブロックを通ります。
このコードブロックで変数door = 2へ変更されましたので赤い枠の実行結果としても、変数door = 2となっていることがわかりますね。
まとめ
今回は、分岐条件について解説しました。PythonはSwitch文がありませんが、特有の記載でC言語系のif-else文を多用したものとは違うので両方代用したような使い方が出来ますね。
他にもPythonとVSCodeでコードの書き方について紹介していますので合わせて確認してみてください
これからもPythonの基本的な使い方やその他言語とVSCodeを使った解説記事を紹介していきますので良かったらTwitterをフォローいただけると嬉しいです
それでは、今回はこのへんでノシ
条件で処理を変えたいときに使う
条件は真偽で判定される