今回はPythonでswitch文のような文を書く方法について解説します。Pythonにはswitch文が無く、すでに用意されている文から見てわかりやすい分岐を作らなければなりません。
この記事では、
- Pythonにswitch文がない理由
- if-elif-else文を使う方法
- 辞書型を使った分岐の方法
についてを解説していきます。
それぞれ分からなくても基礎から解説していくので、ぜひ一緒に学んでいきましょう!
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
Pythonにswitch文がない理由
switch文は条件によって処理を変える場合に使われる分岐の方法です。分岐の方法としてはif文もありますが、分岐の種類が少ない場合にはif文、分岐の種類が多い場合にはswitch文を使う場合が多いです。
ちなみに、このコードはC言語で書かれたswitch文です。
switch(式) { case 値1: 式の結果と値1が一致したときの処理 break; case 値2: 式の結果と値2が一致したときの処理 break; default: 式の結果がどの値とも一致しなかったときの処理 }
とても見やすく分岐が書かれていますね。しかしPythonにはswitch文がありません。
公式ドキュメントによると、if-elif-else文を使って同じことができるという理由から、switch文は採用していないとのことです。
次の章からはswitch文の代替になるような分岐の方法について紹介していきます。
if-elif-else文を使う方法
まずはif-elif-else文を使う方法についてです。この方法はPythonの公式ドキュメントにもswitchがない理由として挙げられている、ポピュラーな方法です。
こちらのコードを見てみましょう。
x = 3 if x == 1: print("一") elif x == 2: print("二") elif x == 3: print("三") elif x == 4: print("四") else: print("エラー")
実行結果
三
このように、それぞれしっかりと分岐ができていますね。
文字列に対しても、同じように比較をすることができます。
x = "こんにちは" if x == "おはよう": print("朝です。") elif x == "こんにちは": print("お昼です。") elif x == "こんばんは": print("夜です。") else: print("今はいつかわかりません。")
このようにswitch文よりは見やすくはないですが、Python特有のインデントで多少は扱いやすくなっていますね。
if文について、詳しくはこちらの記事をご覧ください。
辞書型を使う方法
if-elif-else文を使う方法について解説してきましたが、場合によって辞書型を使うと見やすい分岐を書くことができます。
こちらのコードを見てみましょう。
x = 3 num_to_kanji = {1:"一", 2:"二", 3:"三", 4:"四"} if x in num_to_kanji: val = num_to_kanji[x] print(val) else: print("エラー")
実行結果
三
このように、それぞれの数字と漢字に対応した辞書を作っておいて、if文で評価をするとより見やすく分岐を行うことができます。辞書に無い値が指定された場合のために、if文を作って、elseでエラーを表示させるようにしています。
if-elif-else文がかなり長くなるようであれば、辞書を作っておくとよいでしょう。
辞書型について、詳しくはこちらの記事をご覧ください。
まとめ
今回はPythonのswitch文の代用について解説してきました。
Pythonにswitch文が用意されていなくても、自分が行いたい処理によって自分で工夫をすることができます。個人的には辞書型を使う方法がお気に入りですが、分岐させたい内容によって適切なものを選んでいきましょう。