制御構文_2(Python_05)

この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。 hirocom777.hatenadiary.org 前回は、制御構文の1つである選択処理について学びました。何らかの条件を指定して、条件によって実行する処理を選択できます。

今回は反復処理について学んでいきたいと思います。

反復処理

おさらいです。反復処理とは条件を満たす間、同じ処理を繰り返し実行する処理です。Pythonにはwhile文とfor文、2つの反復処理のための構文があります。

while文

while文は条件式がTrueの間、処理を繰り返し実行する構文です。以下のように記述します。

while 条件式:
    # 処理

条件式にはブール値を返す値、数式が記述されます。if文と同じです。処理は、インデントする必要があります。こちらもif文と同じです。これで条件式がTrueを返している間、処理部分に記述している内容を実行します。処理の結果、またはその他の要因で条件式がFalseになると、処理をせずにwhile文をぬけます。

i = 5
while i:
    print(i, end=' ')
    i -= 1
# 5 4 3 2 1 と表示される

print関数のendオプションは、表示末尾に出力する文字を指定できます。省略すると\nとなります。

条件式がTrueの間は処理を抜けません。条件式の設定を間違えると無限に処理を実行する形になるので、注意が必要です。

for文

for文は順番のある要素の集まり(オブジェクト)に対して、順番に取り出しながら反復処理を行います。要素を取り出す順番が決まっているオブジェクトを、イテラブルなオブジェクトといいます。以下のように記述します。

for 変数 in イテラブルなオブジェクト:
    # 処理

オブジェクトから取り出した要素を変数に代入して、最後の要素まで繰り返します。以下は文字列データを使用した例です。

for char in 'Hello':
    print(char, end=' ')
# H e l l o と表示する

これまで御紹介したイテラブルなオブジェクトは文字列型のデータだけです。他にも色々なものがあります。ここではrange関数を使ってみましょう。range関数は整数のシーケンスを生成します。以下のように記述します。

range([start,] stop [, step])

整数startから整数stop未満のシーケンスを生成します。
startは開始値を指定します。省略した場合は0になります。
stopは終了値の1つ後を指定します。
stepは、startから増やしていく値を指定します。省略した場合は1になります。 以下はrange関数を使用した例です。

for i in range(2,10,3):
    print(i, end=' ')
# 2 5 8 と表示する

ネスト

ネストとは入れ子構造のことです。前回ご紹介したif文や、今回のwhile文、for文の処理部分にif文、while文、for文を記述できます。記述部分の処理についてはさらにインデントが必要です。以下はfor文とif文を使ったネストの例です。

for i in range(1, 11):
    if i % 3 == 0:
        print(i, end=' ')
# 3 6 9 と表示する

反復処理をネストすることもできます。

for x in range(1,10):
    for y in range(1,10):
        print(f'{x}×{y}={x*y}')
# 九九の結果を表示する

break文

反復処理を実行中に、条件次第で処理を抜けたい場合があります。この場合はbreak文を使用します。反復処理の中にbreak文を記述すると、反復処理から強制的に抜けます。break文の後に記述されている処理は、実行されません。以下はbreak文を使用した例です。

num = 0
while True:
    num += 1
    if num >= 5:
        break
    print(num, end=' ')
# 1 2 3 4 と表示する

この様に、break文はif文で条件指定して使用する場合が多いです。反復処理をネストしている場合、内側の反復処理でbreak文が実行されると内側の反復処理のみ抜けます。

continue文

continue文は反復処理実行中に条件によって、その後の処理を省略して処理の先頭に戻って継続します。

num = 0
while num <= 5:
    num += 1
    if num % 2:
        continue
    print(num, end=' ')
# 2 4 6  と表示する

continue文もif文で条件指定して使用する場合が多いです。

elseブロック

反復処理の最後にelseブロックを記述すると、反復処理終了後の処理を記述できます。以下のように記述します。

while文、またはfor文
    # 反復処理
else:
    # 反復処理終了後の処理

elseブロックに記述した内容は、反復処理をbreak文で抜けた場合、実行されません

次回は関数とオブジェクト

いかがでしょうか。反復処理を使用すると、複雑、大量な処理を簡単に記述できそうです。次回は関数とオブジェクトです。これまで御紹介した以外の、イテラブルなオブジェクトをご紹介します。お楽しみに!!

hirocom777.hatenadiary.org Python再学習のまとめはこちら!!