Python の制御構造

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文と同様、繰り返し行いたい処理の部分をインデント(字下げ)します。