ここでは「条件分岐」について学びます.
次のコードを眺めてみましょう.別タブなどで開いてください.
ここではプログラムの基本である 条件分岐 が使われています. コードの4行目を見てみましょう.
if x_value == 3:先頭の if は英語と同じく「もし〜だったら」という意味です.
この行を日本語で表現すると,
もし変数 x_value が3と等しければ,
となります.
ここで,「等しいかどうか」を
=ではなく==という記号で表現しています.Pythonでは=を「右辺を左辺に代入」という意味で使ってしまっているので,「右辺と左辺が等しい」ことを表すために=を使えません.代わりに==を使います.
さて,x_value が3と等しい場合は次の行を実行します.次の5行目を見てみましょう.
print("xは3")このように print 使って「xは3」と表示させます.
それでは条件分岐の書き方について簡単にコメントします.
- 条件分岐は「もし〜だったら」は
ifという英単語を書けばいいだけ. - 「そうでなければ」を意味する英単語は「else」.「そうではなくて,もし〜だったら」としたいから「else if」.ということで,それを短くした
elifを使う. elifは何個分あってもかまわない.上から順に読んでいって,もし記載した条件が満たされなければ下の方に流れていき,どこかで条件に引っかかったらその内容が実行される.- 内容が実行された時点で
if全体から抜け出ることに注意が必要.つまり,そこから先のelifは無視される. - 記載したすべての条件を満たさない場合に何かをさせたければ,最後に
elseを書けばいい. andは「左右両方ともの条件が満たされていれば」であり,orならば「左右のどちらかの条件が満たされていれば」になる.
条件分岐を大量に使いこなせば,「こういう状況だったら,こうやって行動する」といったような人工知能っぽい動きをさせることもできます.
人工知能の話はさておき, if を使えば,例えばデータの前処理として「こういうデータ点はどう考えてもおかしくて,計測機器のバグやアンケート調査の際のミスだから除外しよう」といったような操作が可能になります.
コード 04_if_check.py の4行目では「左辺と右辺が等しいか」の判定に = ではなく == という記号が使われています.
条件分岐ではこのような「比較」を組み合わせて組み立てていきます.
数学でいう数値の「比較」をするための記号との対応は以下のとおりです.
- 数学の = :
==(左辺と右辺が等しいかを判定する) - 数学の ≠ :
!= - 数学の > :
> - 数学の < :
< - 数学の ≥ :
>= - 数学の ≤ :
<=
Pythonのプログラミングにおいて一番大切なポイントは,Pythonでは各行の最初の空白(スペース)で『まとまり』を表現する ということ.これはほかのプログラミング言語にはない特徴で,これによってコードが見やすくなるというメリットがあります.
コード 04_if_check.py の if 文を見ると,行末にコロン ':' が書かれています.これが『まとまり開始』の合図です.そしてコードの形を見れば明らかなように,その『まとまり』が空白を使って表現されています.
空白は何文字でもかまいませんが『揃えておく』必要があります.標準的には「4文字分」の空白が使われます.ただ,毎度空白を入力するのは大変ですので,「tab」キーを活用しましょう.「tab」キーを押すことで自動で空白を入れてくれます.
コード 04_if_check.py を1行ずつ読んで,どういった処理を行うのか理解しましょう.
次に,コードを実行して正しく処理されているか確認しましょう.最後に,5行目を書き直して, x_value に7を代入した時に正しく動作するか確認しましょう.
コード 04_if_code_formatting.py を実行するとエラー文が出ます.正しく条件分岐を行えるようにデバッグし,結果を確認しましょう.
コード 04_if_multicondition.py を読んでください.コメントにあるように,x_name,y_name,z_name にリンゴとキウイがあるかを判定して表示するコードを作りたいです.この処理を if 文を使って実現しましょう.
ただし,できるだけ短く,かつ見やすいコード を目指しましょう.
あまりに if 文が多いと読みにくく長いコードになりますし,かといって 1つの if 文の中に処理を詰め込むとデバッグしにくくなります.
ヒント: 複数の条件を同時に使いたい場合,上の説明にあるように
andやorを使ってみましょう.