どうも!リョクちゃです。
今回は、Pythonの制御構文を触れていきます。
制御構文には、条件によって処理を分岐する条件分岐と、
条件のもとで処理を繰り返す、繰り返し処理があります。
条件分岐にはif文と呼ばれる構文が、繰り返し処理には、
for文やwhile文と呼ばれる構文があります。
これらの使い方を学んでいきます。
①では、条件分岐であるif文について、
②では、繰り返し処理についてそれぞれ触れていきます。
2部構成にわけて触れていきます。
ちなみに前回は、Pythonのおそらく基礎となる構造について触れました。
目次
条件分岐~if文~
Pythonでif文は、下のような構文になります。
1 2 3 |
# 構文 if 条件式 : # 処理 |
条件式の後には、“:”(コロン)を付加します。
※これ、意外と忘れがちなので気を付けてください!
if文の下行には、先頭がインデントされています。
ここでインデントをしていないとif文は成立しないで、
独立した文になってしまうので注意です。
インデントしていないと処理によっては、条件式に成り立たなくても実行されてしまいます。
また、何らかのエラーが発生すると思います。
具体的な例を交えると、
1 2 3 4 |
a = 2 if a % 2 == 0: print("偶数です") |
ここでは変数aが偶数であれば、
文字列”偶数です”を出力するといったコードを書いています。
“%”は算術演算子と呼ばれ、除算した結果の”あまり”を返してくれます。
“==”は比較演算子と呼ばれ、条件式の右辺と左辺が等しいかどうかを結果として返します。
先ほどの例文を振り返ると、a % 2の結果が0であれば、if文の中の処理を実行します。
条件式の処理の流れとしては、
- a % 2 を処理する。
a % 2 = 2 % 2
= 0 - 1.より、if 0 == 0
== では、右辺と左辺が等しい場合の意となりで、
これにより条件式に合致することがわかります。 - 条件式に合致したので、print(“偶数です”)が実行されます。
if文の種類
if文には、ほかにも構文があって、それぞれ下に構文を記します。
1 2 3 4 5 6 7 8 9 10 11 |
# 構文① if 条件式1 : 処理1 elif 条件式2 : 処理2 # 構文② if 条件式1 : 処理1 else : 処理2 |
構文①は、
条件式1に当てはまれば処理1を実行し、条件式1に当てはまらなければ、
条件式2を実行し、条件式2に当てはまれば処理2を実行する。
当てはまらない場合は、処理1も処理2も実行されない。
といった、処理になります。
一方で、構文2は条件式1に当てはまれば処理1を実行し、
当てはまらなければ処理2を実行する。
といった処理になります。
ここで例を示すと、
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# ① a = 2 if a > 10 : print("大きい") elif a < 10: print("小さい") # ② a = 2 if a > 10 : print("大きい") else : print("小さい") |
①の場合はどちらにも当てはまらなけらば、何にも出力されません。
一方で②は、どちらかに必ず当てはまるので、何らかの文字が出力されます。
①と②を組み合わせることもできます。
組み合わせてみると、必ずどれかの処理にはいるので何らかが実行されます。
ここでは文字列が条件式においてエラーが起きない限り、出力されます。
下のような文になります。
1 2 3 4 5 6 7 |
a = 2 if a > 10 : print("大きい") elif a < 10 : print("小さい") else : print("同じ") |
変数aが10より大きければ、print(“大きい”)を実行します。
逆に変数aが10より小さい場合は、print(“小さい”)が実行されます。
どちらにも当てはまらない場合は、print(“同じ”)が実行されます。
ここで、”>”や”<“は比較演算子と呼ばれる記号で、
“<“は、~より小さい
とそれぞれ意味があります。
したがって、
- a > 10は、aは10よりも大きい
- a < 10は、aは10よりも小さい
とそれぞれ表すことができます。
こんな感じでif文と呼ばれる条件分岐を使うことができます。
これを使えるようになると、何らかのOK/NGの判定なんかもできるようになりますね。
ちなみにこれらの処理を絵に描いて表してみると下の感じになります。
こうして、絵で表したものを“フローチャート”と呼んでいます。
これがあることで、視覚的にプログラムの流れがわかります。
実際にプログラムを書く前に、筆者もフローチャートを書き、
プログラムを作っていってます。
フローチャートについては、別途触れる機会を設けようと思います。
気になる方は、こちらの書籍が参考になるかと。
第1章-7節がおすすめです、丁寧に教えてくれます。
他にもプログラムを作るうえでの考え方も書かれていますが、
プログラムを始めたての人には早いような気もします。
実際僕も、始めたてで買って”?”になってしまったので……。
ある程度骨組みなどわかってきたら読んでみるといいかと。
おわりに
ざっくりとif文について触れました。
これをきっかけに使えるようになってもらえたら嬉しいです。
if文は慣れると非常に使いやすい文ですが、落とし穴があります。
それは、if文の中にif文を入れていきつづけて、
書いている側がわからなくなってしまうことです。
これを“ネストの闇”と筆者は言っています。
これこそがスパゲティコードの原因なのではと思ってしまうぐらい、
非常にカオスなものとなってしまいますので注意が必要です。
以前に、ほかの言語の記事で筆者がコードを書く際に気を付けることでも触れましたが、
だいたい一つの処理で5~6コぐらいの深さまでがいいと思います。
・こちらの書籍を参考にPythonの理解を深めました。