【Python】switch文がない!?いや、まずif文を覚えよう
Pythonのif文は少し特殊です。
Javascriptを例にあげると、
if~if else~else
となりますが、Pythonでは、
if~elif~else
と書きます。
あと
「switch分岐」
がありません。
ここでは
・Pythonではif文をどのようにかくのか
・Pythonでswitch文がない理由
について解説します。
Pythonではif,elif,elseで成り立つ
Pythonでは
if [条件式A]:
…<処理>※インデント
elif [条件式B]:
…<処理>※インデント
︙
else:
...<処理>
というふうに書きます。
なお、処理の順番は
①if
②elif(else ifではないことに注意!)
③else
となります。
たとえば、ユーザーの入力した数字によって、
「メニュー」を選べるプログラムがある
とします。
そうすると、以下のコードになります。
print('1.コーヒー')
print('2.紅茶')
print('3.オレンジジュース')
menu_code=int(input('メニューを選んでください。'))
if menu_code == 1:
print('コーヒーが選択されました。')
elif menu_code == 2:
print('紅茶が選択されました。')
elif menu_code ==3:
print('オレンジジュースが選択されました。')
else:
print('メニューが見つかりません。')
まず、input文を使って、ユーザーからの入力を受け取ります。
input文の戻り値は文字型
なのであらかじめ、
int型と呼ばれる数値型
に変えておきます。
そのあとif文で、
if menu_code == 1:
print('コーヒーが選択されました。')
elif menu_code == 2:
print('紅茶が選択されました。')
elif menu_code ==3:
print('オレンジジュースが選択されました。')
else:
print('メニューが見つかりません。')
のように、
ifでだめだったら
elifでだめだったら
elifでだめだったら
︙
else
にうつることで、
「処理分けを実現」
しているというわけです。
※もし、文字列で入力された場合は例外の構文を使わなければいけないので、あえて使っていません。
Pythonではswitchにあたる構文がない。
if menu_code == 1:
print('コーヒーが選択されました。')
elif menu_code == 2:
print('紅茶が選択されました。')
elif menu_code ==3:
print('オレンジジュースが選択されました。')
else:
print('メニューが見つかりません。')
☝じゃあ、さっきのコードはswitch文でいけるんじゃない?といいますが、Pythonでは
「Switchにあたる構文」
がありません。おそらくPythonでは
そもそもインデントによってコードが読みやすくなっている
ので、Pythonという言語にSwitch文をあえて設けなかったのかもしれません。
switch文かif文かで迷わない
ってことは個人的に
「読みやすさに時間をはぶく」
ことにも繋がりますし、
「初心者にとって扱いやすい言語」
なのではないかと思います。
また、Python公式サイトによると
if x == 'first state':
...
elif x == 'second state':
...
elif x == 'third state':
...
elif x == 'fourth state':
...
else:
# default handling
...
を例に上げて、
This works fine for short switch constructs(このコードは短いswitch文として機能している。)
とかかれてあります。
以上のことからも、Pythonに
「Switch文を加え」
なくても読みやすいので
「あえて加えなかった」
と言えるのかもしれません。
まとめ
これまで
・Pythonでのif文の使い方
・なぜSwitchの文は存在しないのか
について説明しました。
言語はどんなものでもそうですが、
「なぜそういった書き方になっているのか」
を考えると楽しいですよね。