キャリテク!マガジン
- TOP
- キャリテク!マガジン
- Pythonの条件分岐、if文を学んでみる。
Pythonの条件分岐、if文を学んでみる。
こんにちは、吉政創成 菱沼です。
今回も「Pythonによるネットワーク自動化の教科書」という書籍を片手に学習していきます。Pythonに興味がある!という超初心者の方、ぜひ一緒に学習していただければ幸いです。
さて、前回はPythonで使える演算子について学習しました。 今回は、前回学んだ演算子を使って、条件分岐をする方法について学びます。
Pythonのif文を使ってみよう
if文と呼ばれるものを使って条件分岐を作ります。「もし、〇〇なら~する。」というものですね。
引用:1.3.1.4 条件分岐
「もし」の処理は、if で書き始め、その直後に書く条件式の最後には「:」(コロン)を書きます。if 文の直後の行はインデントして書き、そのブロックの処理は、条件式がTrue の場合に実行されます。条件式には、演算子を使って評価を行い、 True か False に分かれるような式を指定します。
このサンプルは、「もし、valueに入っている値が5なら、「5です」という文字列を表示する」というプログラムです。
valueには5が入っているので、そのまま「5です」が表示されますが、「もし〇〇じゃなかったらどうするか」という指令が入っていませんので、違った場合はこのままでは何も表示されません。というわけで、次はそうでなかった場合にどうしたいかを設定する方法です。
else文で条件に当てはまらなかったときにどうするか指示してみよう
条件と合致しなかった場合にどうするかという指示にはelse文を利用します。もちろん、合致しなかったときにして欲しいことがないのであれば、先ほどのサンプルコードのように書く必要はありません。
引用:1.3.1.4 条件分岐 1.3.2-2 else 文
「そうでなければ」の処理は、if 文で指定した条件式が偽(False)の場合に、else 文の後に記述されたブロックが実行されます。else 文を書いた場合は、if 文の後か else 文の後、どちらかのブロックが必ず実行されます。
先ほどのコードにelse以降が追記されました。 このサンプルではvalueが10なので、else 文で指定された指示の「5ではありません」の印字が実行されます。
elif 文で複数の条件を付けてみよう
複数の条件を付けたいという言こともあると思います。そういう時、Pythonではelif 文を使うことで、複数の条件を付けることができます。
引用:1.3.1.4 条件分岐 1.3.3-3 elif 文
「あるいはもし」の処理は、if 文での条件以外に、複数の条件が必要な場合、elif 文を使って条件式を追加できます。条件は上から順に評価され、条件が真(True)となる式の後に続く文だけが実行されます。elif 文は必要な数だけ書くことができ、必要に応じて最後にelse 文を書くこともできます。
5と同じか、10より大きいか、5より大きいかという3つの条件が付き、どれでもないならこうしなさいというif 文の出来上がりです。
ちなみに、andを使うと、こんな書き方もできます。elifのところに入ってますね。
さらに、andは実は省略することができるそうです。
「value>5とvalue<=10なら」としていたところを「5<value<=10なら」と置き換えると省略できます。
おまけ
最初の引用文のところで、「ブロック」というワードが出てきました。
引用:1.3.1.4 条件分岐 POINT
「ブロック」とは、一つのまとまりとして実行される文の集まりです。Python のような言語では、「オフサイドルール」と呼ばれる方法を使ってブロックを明示します。PEP8 では、半角スペース4 つを使ってインデントすることが推奨されています。
他の言語だとブロックは{}で囲うなどの表現を使うそうですが、Pythonはインデントでブロックを表現されます。インデントされて同じ位置にあるものが1つのブロックとみなされるため、インデントの位置がずれた時点で、別のブロックとして認識されるそうです。
なので、別のブロックがまだ登場しない時点でインデントがついていると、エラーが出ます。ブロックのイメージはこんな感じ。
ところで、インデントはtabキーではなく、半角スペース4つになります。全角4つやタブキーにしてしまうと、「IndentationError」が発生します。
ちなみに、IDLEなどのエディタを使うと、自動で正しい形のインデントを入れてくれますが、コマンドプロンプトを利用する場合は自分で入れる必要があるようです。うっかり全角にしないように気を付けましょう。
ということで、今回はこちらで終了です。お付き合いいただき、ありがとうございました。
未経験で、インフラエンジニアを目指す方は、AltX社の未経験者向けインフラエンジニア採用情報をご覧ください。
https://www.altx.co.jp/careetec/requirements/