【Python】switch文での場合分けはできる?表現方法を解説

プログラミングでは複数の場合分けを記述する際にswitch~case~文をよく用います。この記法は、場合分けが多くなっても見やすい点が特徴です。

本記事では、Pythonでswitch文のような複数場合分けを表現する方法を紹介します。

【結論】Pythonにswitch文はない

結論から言うと、現状Pythonではswitch文は用意されていません。ではどうすればよいのでしょうか?

Python公式によると、if文を使えば同じような表現ができるからそれを使えということだそうです。また、辞書による場合分けも推奨されています。switch文の実装も検討されているようですが、当分実装されることもなさそうなので、おとなしくif文や辞書で表現するのが無難です。

if文での場合分けは主にケースがそれほど多くないときに、辞書での場合分けはケースが多い場合によく用いられます。しかし、これが正解というルールではないので、使いやすいかつ分かりやすいように表現できればいいと思います。

if文 で表現する

if文で複数の場合分けを表現してみます。基本的にはif~elif~elseで表現します。

if 条件①:
 処理①
elif 条件②:
 処理②
elif 条件③:
 処理③
・
・
else 条件X:
 処理X(どの条件にも当てはまらなかった場合)

例えばjavaで以下のようなswitch文を用意します。

##Javaでのswitch文
switch(val){
case "1":
    System.out.println("No.1");
    break;
case "2":
    System.out.println("No.2");
    break;
default:
    System.out.println("No result");
}

これをPythonのif文で表現すると、

if val == "1":
    print("No.1")
elif val == "2":
    print("No.2")
else:
    print("No result")

となります。場合分けの数に応じて、elif~を追加していきます。この方法は、そこまで場合分けの数が多くない場合に用いられることが多いです。

辞書で表現する

場合分けが多くなってきたら、辞書型を使うことですっきりしたコードになります。

today = 4

day_of_week = {1: "月曜日",
               2: "火曜日",
               3: "水曜日",
               4: "木曜日",
               5: "金曜日",
               6: "土曜日",
               7: "日曜日",
} 

if today in day_of_week:
    result = day_of_week[today]
    print("今日は" + result)
else:
    print("正しい数値を指定してください")
#Output
今日は木曜日

このように条件分岐を辞書型配列に格納しておき、if文でチェックして処理を行うようにします。elifを使うと曜日7つ分記述しないといけないですが、辞書にするとこんなにシンプルに記述することができます。

また、辞書配列自体も設定ファイル等外部ファイルから読み込むようにすることも可能なので、変更対応も可能です。

まとめ

Pythonではswitch文がないですが、代替の方法でも不便なく場合分けを表現することができます。elif~や辞書を使って、わかりやすくシンプルにプログラムを書いてみてください^^

ではでは👋