if文での条件式の使い方です。
if文は、場合分けの条件を決めることで、処理の分岐を作ることができます。
プログラムの構造を組み立てるif文の使い方は、下記で解説しましたので是非ご覧ください。
≫ Python入門】if文の使い方(複数条件)
条件式とは
- 比較演算子
- 論理演算子
条件式は、2種類の演算子を使って記述します。
まずは、比較演算子から見ていきます。
比較演算子
フローチャートを見ながら、if文の使い方を確認してみましょう。
図1のif-else文は、条件式で処理を2つに振り分けています。
条件式は、条件が成立するときにTrueを返し、条件が成立しないときにFalseを返します。
上記のコードでは、<条件式>p == 0は、
・pが0に一致するとき、True(真)
・pが0に一致しないとき、False(偽)
を返します。
p=8をif文が評価すると、Falseが返ってきますので、処理はelseブロックへ進みます。
フローチャートの[処理3]が、コードのp = p – 10となります。
やっと比較演算子にたどり着きました。
<条件式>の==が、左辺と右辺が等しければTrueを返す比較演算子です。
主な比較演算子は次のとおり
演算子 | 評価 | 使用例 |
== | 左辺と右辺が等しいとTrue | 0 == 0 → True 0 == 1 → False |
!= | 左辺と右辺が等しくないとTrue | 0 != 0 → False 0 != 1 → True |
< | 左辺が右辺より小さいとTrue | 1 < 5 → True 1 < 1 → False |
<= | 左辺が右辺以下だとTrue | 1 <= 1 → True 1 <= 0 → False |
> | 左辺が右辺より大きいとTrue | 1 > 0 → True 1 > 1 → False |
>= | 左辺が右辺以上だとTrue | 1 >= 1 → True 0 >= 1 → False |
上記のコードでは、<条件式>p < 10は、
・pが10より小さいとき、True(真)
・その他の場合: pが10より大きいとき、False(偽)
を返します。
p=8をif文が評価すると、Trueが返ってきますので、処理はifブロックへ進みます。
フローチャートの[処理2]が、コードのp = p + 1となり、pに9が記録されます。
比較演算子のまとめ
- 条件式は、Trueか、Falseのどちらかを返す式だとわかった
- 条件式の左辺と右辺を比べる方法は、比較演算子で決めることがわかった
論理演算子
- and(かつ、および)
- or(または)
よく使う論理演算子は2種類です。
if文では、elifを使って場合分けを繰り返すことができますが、単純なif-elif文では場合分けできないことがあります。
例えば、pが5より大きく、かつ、10より小さい。
少し考えてみてください。
それでは、コードを見てみましょう。
このケースでは、if文に1つの条件式では記述できないので、if文の中にif文を入れることになります。
このような構造を、「入れ子」や「ネスト」と呼びます。
「入れ子」の構造を使わないときは、論理演算子を使って<条件式>を結合します。
条件式がスッキリとしました。
<条件式1>p > 5 と <条件式2>p < 10 の間にあるのが、論理演算子のandです。
ここで重要なのは、if文の<条件式>はTrueか、Falseかを返す式なので、上記のコードでは<条件式>p > 5 and p < 10がTrueを返していることです。
よく使う論理演算子を見てみましょう。
演算子 | 評価 | Trueの例 | Falseの例 |
<1> and <2> | かつ および | <1> True <2> True 結果: True | <1> True <2> False 結果: False |
<1> or <2> | または | <1> True <2> False 結果: True | <1> False <2> False 結果: False |
andは、<1>と<2>の両方がTrueのときにTrueを返します。
orは、 <1>と<2>の片方でもTrueのときにTrueを返し、 両方がTrueのときもTrueを返します。 <1>と<2>の両方がFalseのときだけFalseを返します。
条件式を2つ結合するときの論理式の使い方がわかりました。
条件式を3つ以上結合するときも、1種類だけ使用すれば、同じ考え方で大丈夫です。
もちろん2種類の演算子を使ってピンポイントの条件を記述することができますが、しっかりと検証しないと予期しない結果になります。
論理演算に慣れるまでは、まぜるな危険と覚えておいください。
まとめ
- if文の条件式を、比較演算子と論理演算子を使って記述できるようになった
- 3つ以上の条件式は、「かつ(および)」か「または」のどちらかだけで結合する