Python 速習チュートリアル

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 つの変数 ab を使用して、ba より大きいかどうかをテストしています。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 は等しいです")

この例では ab が等しいため、最初の 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 > aa == 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 (三項演算子)

ifelse の両方にステートメントが 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 # まだ実装していないがエラーを出したくない場合に使用