Pythonの制御構文には、次のようなものがあります。
- 条件分岐: if文
- ループ: for文 while文
条件分岐
条件分岐とは、「ある条件が成り立つときだけAという処理を行う」といった構文です。
「ある条件が成り立つときだけ」ではなく、「ある条件が成り立つときにはA、成り立たないときにはB」と、MECEに(モレなくダブりなく)何らかの処理を行うようなやり方もできます。
Pythonの条件分岐には「通常のif文」と「ifを使った三項演算子」とがありますが、三項演算子についてはできることはif文と変わらないためここでは割愛します。
ちなみに、条件分岐は英語で「conditional branching」というそうです。日本語の条件分岐はその直訳ですね。
ループ
ループとは、「ある一定の処理を何度も繰り返し行う」ような構文です。こちらは英語でも同じく「loop」と呼ぶみたいですね。
if
条件分岐のif文は次のような形で使います。
if n > 10:
print 'nは10よりも大きな数字です'
elif n > 5:
print 'nは10以下で5よりも大きな数字です'
else:
print 'nは5以下の数字です'
このコードは、nという変数が10を越えていたら「nは10よりも大きな数字です」と画面に出力してくれます。一方で、nが5よりも大きく10以下の場合は「nは10以下で5よりも大きな数字です」と、さらに、nが5以下の場合は「nは10以下の数字です」という文章を画面に表示します。
Pythonのif文では、ほかの言語でよく見るような「()」(丸括弧)や「{}」(中括弧)、「endif」を使いません。代わりに、「:」(セミコロン)とインデント(字下げ)を使って階層構造を表現します。Pythonにおける「else if」は「elif」と書きます。
この例であれば、「print~」の文の左には4つの半角空白が入っており、これをPythonインタプリタは階層構造になっているものと解釈します。
ちなみに、PythonにはC言語で見られるような「switch~case」文は用意されていません。
for文
Pythonでのfor文は次のような形で使います。
for i in range(0, 10):
print i
このコードは、0、1、2、・・・9と、0から9までの数字を順番にprint出力します。「range(0, 10)」という部分の0と10を一般化して「range(m, n)」として
for i in range(m, n):
print i
とすると、これはnから始まってn+1、n+2、と順番にn未満の最大の整数まで表示してくれます。
また、Pythonでいう配列(リスト)の各要素を順番に走査したい場合は次の形で行うことができます。
for e in array:
print e
if文と同様、こちらも、繰り返し行いたい部分をインデント(字下げ)することで階層構造を表現する形になります。
詳細はここでは割愛しますが、「for a in b:」のbにあたる部分をPythonで「イテレータ」と呼びます。
while文
Pythonでのwhile文は次のような形で使います。
i = 10
while i > 1:
print i
i = i - 1
このコードは、10から1までの整数を順に表示します。if文やfor文と同様、繰り返し行いたい処理の部分をインデント(字下げ)します。