Python: if文の使い方(条件分岐)
プログラムの3大制御構造(順次・条件分岐・繰り返し)のうちの1つ、 条件分岐について解説します。
多くのプログラミング言語では条件分岐はif文とswitch文の2種類がありますが、 Pythonはif文のみでswitch文はありません。 ですからif文・if-else文・if-elif-else文の使い方について解説しています。
if文
if文の処理構造をフローチャートで表したのが下図です。
条件分岐の中でも、最もシンプルな構文です。
条件式が真(True)の場合にifブロックに記述されている処理を行い、
条件式が偽(False)の場合には何も実行しません。
if 条件式: 処理(ifブロック)
条件式の後には:(コロン)を付け、 処理を記述するifブロックはインデント(字下げ)して記述します。 :(コロン)はうっかり忘れがちなので注意してください。
Pythonではインデント(字下げ)でブロックの範囲を示すため、
インデントが重要な意味を持ちます。ブロックやインデントについて
詳しく知りたい場合は次の記事を参考にしてください。
(関連記事:
Pythonの重要概念「インデントでブロックの範囲を指定する」)
具体的なコードは次のようになります。
a = 120 if a >= 100: print("100以上です")
通常は条件式を()丸括弧で囲む必要はありませんが、 論理演算子を使うような複雑な条件式の場合は()をつけると見やすくなります。
if (a >= 100 and b >= 100): print("どちらも100以上です")
条件式が長くなる場合は、途中で改行して複数行に渡って条件式を記述することもできます。 その場合の記述方法は次の記事を参考にしてください。 (関連記事: Python: 文の途中で改行し、複数行で記述する方法)
if-else文
if-else文の処理構造をフローチャートで表したのが下図です。
条件式が真(True)の場合だけでなく、
偽(False)の場合にも何らかの処理をしたい場合は
if-else文を使います。
条件式がTrueの場合にifブロックの処理を実行し、
Falseの場合にはelseブロックを実行します。
if 条件式: 処理(ifブロック) else: 処理(elseブロック)
:(コロン)は条件式の後だけでなく、elseの後にも必要です。 ifブロックとelseブロックはインデント(字下げ)して記述します。
if-elif-else文
if-elif-else文の処理構造をフローチャートで表したのが下図です。
条件式が成立しなかった時に、
別の条件式でTrue/Falseを判定したい時は
if-elif-else文を使います。
条件式1がTrueの場合にifブロックの処理を実行し、 Falseの場合には条件式2を判定します。 条件式2がTrueの場合はelifブロックを実行し、 Falseの場合はelseブロックを実行します。
if 条件式1: 条件式1がTrueの場合に行う処理 elif 条件式2: 条件式1がFalseで条件式2がTrueの場合に行う処理 else: すべての条件式がFalseの場合に行う処理
「elif」の部分を「elseif」や「else if」 と記述するプログラミング言語もありますが、 Pythonでは「elif」と記述します。
上の例ではelifの部分(elif句)は1つですが、2つ以上あっても構いません。
特にPythonの場合はswitch文がありませんから、
数多く条件分岐したい場合はelif句を多数記述することになります。
(関連記事:
Pythonに「++」、「--」、「switch」、「do while」は無い)
次のコードはif-elif-else文のサンプルコードです。 elif句が2つあり、 変数aの値が100以上、90以上、80以上、80未満の4つの場合に分かれています。
a = 95 if a >= 100: print("100以上です") elif a >= 90: print("90以上です") elif a >= 80: print("80以上です") else: print("80より下です")
比較演算子、論理演算子
if文の条件式で使う比較演算子と論理演算子は次の通りです。
比較演算子(== != <= ...)
演算子 | 意味 |
---|---|
== | 等値 |
!= | 不等値 |
< | 小なり |
<= | 小なりイコール |
> | 大なり |
>= | 大なりイコール |
in | 左辺が右辺に存在する |
not in | 左辺が右辺に存在しない |
is | 左辺と右辺が同一 |
is not | 左辺と右辺が同一でない |
論理(ブール)演算子(and or not)
演算子 | 意味 |
---|---|
and | 論理積 |
or | 論理和 |
not | 否定 |