Python3 条件制御
Python の条件文は、1つまたは複数のステートメントの実行結果(True または False)によって、実行するコードブロックを決定します。
下の図で条件文の実行プロセスを簡単に理解できます:
コード実行プロセス:

条件判定キーワード
| キーワード / 関数 | 説明 | 例 |
|---|---|---|
if |
条件判定文。条件が True の場合にコードブロックを実行します | if x > 0: |
elif |
複数条件の判定分岐(else if) | elif x == 0: |
else |
すべての条件を満たさない場合に実行 | else: |
pass |
空文。プレースホルダー用で、構文の完全性を保証します | if x > 0: pass |
match |
構造的パターンマッチング(Python 3.10+、switch に類似) | match x: case 1: ... |
if 文
Python の if 文の一般的な形式は次のとおりです:
- "condition_1" が True の場合、"statement_block_1" ブロック文を実行します
- "condition_1" が False の場合、"condition_2" を判定します
- "condition_2" が True の場合、"statement_block_2" ブロック文を実行します
- "condition_2" が False の場合、"statement_block_3" ブロック文を実行します
Python ではelifの代わりにelse ifを使用します。したがって、if 文のキーワードは次のとおりです:if – elif – else。
注意:
- 1、各条件の後にはコロンを使用します:、これは条件を満たした後に実行するステートメントブロックであることを示します。
- 2、インデントを使用してステートメントブロックを区切ります。同じインデント数のステートメントが集まって1つのステートメントブロックになります。
- 3、Python にはswitch...case文はありませんが、Python 3.10 バージョンでmatch...caseが追加されました。機能も類似しているため、詳しくは下文を参照してください。
Gif デモ:

例
以下は簡単な if の例です:
例
上記のコードを実行すると、出力結果は次のとおりです:
1 - if 表达式条件为 true 100 Good bye!
結果からわかるように、変数 var2 が 0 のため、対応する if 内のステートメントは実行されませんでした。
以下の例では、犬の年齢計算の判定を示しています:
例
上記のスクリプトを dog.py ファイルに保存し、そのスクリプトを実行します:
$ python3 dog.py 请输入你家狗狗的年龄: 1 相当于 14 岁的人。 点击 enter 键退出
以下は if でよく使われる操作演算子です:
| 演算子 | 説明 |
|---|---|
< |
より小さい |
<= |
より小さいか等しい |
> |
より大きい |
>= |
より大きいか等しい |
== |
等しい、2つの値が等しいかどうかを比較します |
!= |
等しくない |
例
上記の例の出力結果:
False False
high_low.py ファイルは数値の比較演算を示しています:
例
上記のスクリプトを実行すると、例の出力結果は次のとおりです:
$ python3 high_low.py 数字猜谜游戏! 请输入你猜的数字:1 猜的数字小了... 请输入你猜的数字:9 猜的数字大了... 请输入你猜的数字:7 恭喜,你猜对了!
if のネスト
ネストされた if 文では、if...elif...else 構造を別の if...elif...else 構造の中に配置できます。
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else:
语句
elif 表达式4:
语句
else:
语句
例
上記のプログラムを test_if.py ファイルに保存し、実行後の出力結果は次のとおりです:
$ python3 test.py 输入一个数字:6 你输入的数字可以整除 2 和 3
match...case
Python 3.10 では match...caseの条件判定が追加され、一連のif-elseを使用して判定する必要がなくなりました。
match の後のオブジェクトは順に case の後の内容とマッチングされます。マッチングが成功した場合は、マッチした式を実行し、そうでない場合は直接スキップします。_すべてにマッチできます。
SVG:match...case 実行フローチャート構文形式は次のとおりです:
match subject:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _:
<action_wildcard>case _:C や Java のdefault:に似ており、他の case がすべてマッチできない場合に、この case にマッチし、常にマッチが成功することを保証します。
例
match status:
case 400:
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
case _:
return "Something's wrong with the internet"
print(http_error(400))
print(http_error(404))
print(http_error(418))
print(http_error(500))
上記は HTTP ステータスコードを出力する例です。複数のステータスコードの出力結果は次のとおりです:
Bad request Not found I'm a teapot Something's wrong with the internet
1つの case に複数のマッチ条件を設定することもできます。条件は|で区切ります。例:
...
case 401|403|404:
return "Not allowed"
SVG:| 複数条件マッチの図
例
match status:
case 200:
return "OK - リクエスト成功"
case 301 | 302:
return "Redirect - リダイレクト"
case 401 | 403 | 404:
return "Not allowed - 権限なしまたは見つかりません"
case 500 | 502 | 503:
return "Server Error - サーバーエラー"
case _:
return "Unknown status - 不明なステータスコード"
for code in [200, 301, 403, 500, 418]:
print(f"ステータスコード {code}: {check_permission(code)}")
match...case詳細は以下を参照してください:Python match-case 文
その他の拡張