Python の条件分岐と if 文 (If...Else)
1. Python の条件と if 文
Python は数学における一般的な論理条件をサポートしています。
- 等しい:
a == b - 等しくない:
a != b - より小さい:
a < b - 以下:
a <= b - より大きい:
a > b - 以上:
a >= b
これらの条件は、主に「if 文」やループ処理において、様々なアクションを決定するために使用されます。
1.1 if 文の基本
if キーワードを使用して、条件が真(True)の場合に実行されるコードブロックを定義します。
a = 33
b = 200
if b > a:
print("b は a より大きいです")この例では、2 つの変数 a と b を使用して、b が a より大きいかどうかをテストしています。a は 33、b は 200 であり、200 は 33 より大きいため、「b は a より大きいです」と画面に出力されます。
2. インデント (Indentation)
Python では、コードのスコープ(範囲)を定義するために、ホワイトスペース(行頭の空白)によるインデントを利用します。他の多くのプログラミング言語では波括弧 {} が使われますが、Python においてインデントは文法上の必須ルールです。
2.1 インデントがない場合のエラー
インデントを忘れると、Python はエラーを返します。
a = 33
b = 200
if b > a:
print("b は a より大きいです") # ここでエラー(IndentationError)が発生します3. Elif
elif キーワードは、Python における「前の条件が正しくなかった場合、この条件を試せ」という命令です。
a = 33
b = 33
if b > a:
print("b は a より大きいです")
elif a == b:
print("a と b は等しいです")この例では a と b が等しいため、最初の if 条件は偽(False)となりますが、次の elif 条件が真(True)となるため、「a と b は等しいです」が出力されます。
4. Else
else キーワードは、それまでの全ての条件に当てはまらなかった場合に実行されるコードを指定します。
a = 200
b = 33
if b > a:
print("b は a より大きいです")
elif a == b:
print("a と b は等しいです")
else:
print("a は b より大きいです")この例では、b > a も a == b も偽であるため、最終的に else ブロックが実行されます。
また、elif なしの else を使用することも可能です。
a = 200
b = 33
if b > a:
print("b は a より大きいです")
else:
print("b は a より大きくありません")5. ショートハンド If (Short Hand If)
実行するステートメントが 1 つしかない場合は、if 文と同じ行に記述することができます。
if a > b: print("a は b より大きいです")6. ショートハンド If ... Else (三項演算子)
if と else の両方にステートメントが 1 つずつしかない場合、これらを 1 行にまとめることができます。これは多くの言語で三項演算子 (Ternary Operators) または条件式として知られています。
a = 2
b = 330
print("A") if a > b else print("B")6.1 複数条件の 1 行記述
1 行の中に複数の else ステートメントを記述することも可能です。
a = 330
b = 330
print("A") if a > b else print("=") if a == b else print("B")7. 論理演算子 (And, Or, Not)
論理演算子は、複数の条件式を組み合わせるために使用されます。
7.1 and
and キーワードは論理演算子で、両方の条件が真の場合に真を返します。
a = 200
b = 33
c = 500
if a > b and c > a:
print("両方の条件が真です")7.2 or
or キーワードは、少なくとも一方の条件が真であれば真を返します。
a = 200
b = 33
c = 500
if a > b or a > c:
print("少なくとも一方の条件が真です")7.3 not
not キーワードは、条件の結果を反転させます(真なら偽、偽なら真)。
a = 33
b = 200
if not a > b:
print("a は b より大きくありません")8. ネストされた if (Nested If)
if 文の中にさらに if 文を入れることができ、これを「ネスト(入れ子)」と呼びます。
x = 41
if x > 10:
print("10より大きいです")
if x > 20:
print("さらに20よりも大きいです")
else:
print("しかし20よりは大きくありません")9. pass 文
if 文は中身を空にすることはできません。しかし、何らかの理由で内容がない if 文を書きたい場合、pass 文を記述することでエラーを回避できます。
a = 33
b = 200
if b > a:
pass # まだ実装していないがエラーを出したくない場合に使用