制御構文

基礎編

コンピュータのプログラムは、どんなに複雑そうにみえるプログラムでも、細かく分解すれば次の3つの単純な構造の組み合わせで構成されています。

  1. 処理を上から順番に一つずつ実行する 順次処理
  2. 条件によって処理を選択する 分岐処理
  3. 条件が満たされている間、処理を繰り返す 反復処理

ここまでの例では1. 順次 に相当する、上から下まで無条件に実行される単純な計算などを体験してもらいました。次は、データを検査し、いろいろな条件に従って適切な処理を行う 2. 分岐 3.反復を学びます。これらの文は、プログラムの流れを制御するあめ、「制御構文」と呼ばれています。

比較演算子

数値の大小や等値などの関係も真偽値で表せます。このように、値を比較する演算子を「比較演算子」と呼びます。

主な比較演算子には、以下のような種類があります。

演算子条件
a < ba は b より小さい
a <= ba は b と等しいか小さい
a > ba は b より大きい
a >= ba は b と等しいか大きい
a == ba と b は等しい
a != ba と b は等しくない
a is ba が b と等しい
a is not ba が b と異なる
a in ba が b に含まれる (a, b は共に文字列、または、b はリストやタプル)
a not in ba が b に含まれない (a, b は共に文字列、または、b はリストやタプル)
10 < 100
100 < 100
100 <= 100
100 == 100
99 != 100
'ab' == 'a' + 'b'
'python' < 'Python'

論理演算

真偽値同士の計算を「論理演算」と呼びます。

  • 二つの真偽値が両方とも真である場合(and)
  • どちらかが真である場合(or)
  • 真偽の反転(not)
True and True
True and False
True or False
no False

and と or では、andのほうが優先順位が上となります。

a and b         # a も b も真であれば真
a or b          # a または b が真であれば真
not a           # a が偽であれば真

if文による条件分岐

if 条件式:
    処理1
    ...
elif 条件式:
    処理2
    ...
else:
    処理3
    ...

if は「もし」を意味します。式が真であれば、インデントされたブロックを実行します。インデントは、行の先頭に スペース文字 を 4文字 入力してから記述します。
elif は「さもなくばもし」を意味します。
else は「さもなくば」を意味します。

num = 11
if num > 10:
    print("BIG")
elif num == 10:
    print("NORMAL")
else:
    print("SMALL")

while文による反復処理

while 条件式:
    処理1
    処理2
    ...

while は「~のあいだ」を意味します。

i = 1
while i < 10:
    print(i)
    i = i + 1

for文による反復処理

Python では反復処理を行うためにwhile 文が用意されていますが、リストやクフルなどを便利に扱えるfor文も用意されています。for 文はwhile 文と異なり、反復条件を指定するのではなく、指定したリストなとに含まれる要素を1 つずつ処理します。

for n in [1, 2, 3]:
    print(n) 
for n in (1, 2, 3):
    print n  
for k in {'one': 1, 'two': 2, 'three': 3}:
    print k 

タプルのリストをfor 文で処理する

for v1, v2 in [("a", 1), ("b", 2), ("c", 3)]:
    print((v1, v2))

処理を10回繰り返したい場合は range() を用います。

for n in range(10):
    print(n)

ループを抜ける(break)

break は最も内側の while, for などのループ処理を抜けます。

for n in range(10):
    if n == 5:
        break
    print n  

ループを繰り返す(continue)

continue は最も内側の while, for などのループ処理を繰り返します。

or n in range(10):
    if n == 5:
        continue
    print n