Python: if文の使い方(条件分岐)
if文
Pythonの条件分岐で使う if文の書式は次の通りです
if 条件: 文1 文2 ...
条件の後には:(セミコロン)を付け、文はインデント(字下げ)して記述します。 条件が True の場合のみ下の文が実行され、False の場合は実行されません。
具体的には次のように記述します。
a = 120 if a > 100: print("100以上です")
通常は条件式を()丸括弧で囲む必要はありませんが、 複雑な条件式で、順番を明示的にしたい場合は()で囲みます。 後は複雑な条件式を見やすくするために()をつけると可読性が高くなります。
if elif else
2つ以上の条件を判断したい場合は、 「if elif else」文を使います。
「elif」の部分を「elseif」や「else if」 と記述するプログラミング言語もありますが、 Pythonでは「elif」と記述します。
if 条件式1: 文1 ... elif 条件式2: 文2 ... elif 条件式3: 文3 ... else: 文4 ...
具体的には次のように記述します。
a = 95 if a > 100: print("100以上です") elif a > 90: print("90以上です") elif a > 80: print("80以上です") else: print("80より下です")
比較演算子、論理演算子
条件式で使う比較演算子と論理演算子は次の通りです。比較演算子(== != <= ...)
演算子 | 意味 |
---|---|
== | 等値 |
!= | 不等値 |
< | 小なり |
<= | 小なりイコール |
> | 大なり |
>= | 大なりイコール |
in | 左辺が右辺に存在する |
not in | 左辺が右辺に存在しない |
is | 左辺と右辺が同一 |
is not | 左辺と右辺が同一でない |
論理(ブール)演算子(and or not)
演算子 | 意味 |
---|---|
and | 論理積 |
or | 論理和 |
not | 否定 |
「True」と「False」の扱い
条件判断をする際に注意しておくことがあります。
文字列や数値もTrue、Falseで判定することができます。
例えば次のようなコードで True、False 判定が可能です。
a = 0 if a: print(True) else: print(False)
True、False 判定をする場合、数値の0と文字列の空の値は False と判定され、 それ以外は True と判定されます。 表にすると次の通りです。
データ型 | True | False |
---|---|---|
数値 | 0以外 | 0 |
文字列 | 空の値以外 | 空の値(None) |
条件判断時に「数値の0と空の値は False として判定される」 ことを認識しておいてください。
次のコードで変数「a」にいろいろな値を代入して、 どのように判定されるのかを試した結果が下の表です。
a = 0 if a: print(True) else: print(False)
「a」の値 | True / False |
---|---|
0 | False |
1 | True |
None | Flase |
"" | False |
"hoge" | True |
"0" | True |
"\n" | True |
"\t" | True |
" "(スペース) | True |
何もしない pass
Pythonでは何もしないことを明示的に示す文として「pass」と記述します。
条件分岐などのあるブロックで、何の処理もしない場合は「pass」と記述しないと エラーになります。
例えば次のコードは「elif」の場合の処理が書かれていないため、 エラーが発生します。
a = 0 if a == 0: print(True) elif a == 1: # 何もしない else: print("ELSE")
File "test.py", line 7 else: ^ IndentationError: expected an indented block
次のように「pass」と記述することで正常に実行できます。
a = 0 if a == 0: print(True) elif a == 1: # 何もしない pass else: print("ELSE")
Switch文はなし
結論からいうと「PythonにSwitch文はありません」
多くのプログラミング言語には条件分岐の方法としてSwitch文があります。
Switch文は数多く分岐させたい場合に便利な方法です。
ですがPythonにはSwitch文はないので、
数多く分岐する必要がある場合も
「elif」を使って対応することになります。
よく言えばシンプルな言語設計です。
「他の言語ではよくあるけどPythonにはない」ものとして、
次のようなものがあります。
- Switch文
- do while文
- ++(インクリメント演算子)
- --(デクリメント演算子)