プログラミングらしくなってきました!!
今回から『制御フロー』ツールです。
制御フローっていうのは、プログラムを実行していく順序のことです。ほとんどのプログラミング言語で、基本的には上から順番に書かれた文を実行していきますが、一本道だけだとできることが限られてしまいます。そこで登場するのが制御フローツールです。その役割は制御フローを条件によって場合分けしたり、同じ処理を繰り返したりすることです。
そんな、制御フローツールの一番最初に紹介されているのが『if文』です。ifは英語で『もし、...ならば』ですね。つまり、if文の役割は制御フローを条件によって分岐させることです。例えば、シャワーを浴びるときにお湯の温度を調節するときのことを考えてみましょう。
if お湯が熱すぎる: 水を増やす elif お湯が冷たすぎる: 水を減らす else: シャワーを浴びる
こんな感じです。上で登場したelifは『else if -そうでなく、...であれば』という意味です。最後のelseは『それ以外の場合』というふうになります。
if文で覚えるべきはたったこれだけです。一つのifに対してelifはなくてもいいですし、複数でもいいです。elseはそこまでのif、elifの条件にどれも当てはまらなかった場合に実行されるので、なくてもいいですが、つけるなら一つだけに限られます。
さて、次は公式チュートリアルに掲載されているif文を見てみましょう。
>>> x = int(input("Please enter an integer: "))
Please enter an integer: 42
>>> if x < 0:
... x = 0
... print('Negative changed to zero')
... elif x == 0:
... print('Zero')
... elif x == 1:
... print('Single')
... else:
... print('More')
...
More
まず、一行目はinput()関数で、何か入力されるのを待っています。input()関数で入力されたものはすべて文字列になってしまうので、それをint()関数でint型に変換し、xという変数に代入しています。この例の場合はinput()で42と入力したので、xにはint型の42が入力されています。その後の流れはなんとなく見てわかると思います。if、eliifの右に条件を書いて:をつけるのがPythonのif文のお作法です。その下には改行して、それぞれの場合で実行したい処理を書いていきます。ここで、Pythonの特徴であるインデントが出てきます。if、elif、elseよりも書き出しが右にずれているのがわかると思います。実際には改行したあとにタブを入力して、書き出しをずらします。こうすることでPythonが処理のブロックがどこからどこまでなのかを認識することができるようになります。また、インデントでブロックを作ることで人間にとってもわかりやすい(読みやすい)プログラムになる効果があるんです。
ここからは、Python公式チュートリアルには触れられていませんが、ifやelifの右に書かれている条件の部分を見ていきたいと思います。
最初の条件は "x < 0" です。数学で出てくる不等号ですね。意味も同じです。次に出てくるのは "x == 0" です。なんか、一個おおくね?でも、これは致し方ありません。Pythonは別の意味(変数への代入)ですでに "=" を使っちゃっているので、イコールを表す記号を別物にしなければならなかったのです。許してあげてください。
このように、ifやelifの条件の部分には "<" や "==" のような記号を使います。これは比較演算子という名前で左側と右側を比べています。比較演算子はその結果を以下のように出力します。
>>> x = 42
>>> x < 0
False
比較した結果が期待されるものと違う場合は "False" という値を返します。
>>> x == 42
True
期待どおりの場合は "True" です。この "True" と "False" は真偽値(ブール値)と呼ばれる特別な値です。データの型としてはブール型になります。ブール型にはこの2つの値しかありません。そして、if文は条件が "True" のときにそれに続く処理を実行し、 "False" のときは無視するというはたらきの制御フローツールなのです。
if文はこれで終わりにして、次回はfor文に進みます。
