for文の使い方です。
for文は、繰り返し処理をするときに使う制御構文で、ループを作ることができます。
制御構文とは
- if文
- while文
- for文
pythonには3種類の制御構文があります。
プログラムはコードの順に処理を実行しますが、順番ではない進めかたをするために、プログラムの流れをかえる制御構文が用意されています。
if文は条件によって処理を分岐するときに、while文とfor文は処理を繰り返すときに使います。
while文とfor文の使い分け
繰り返し処理は、 while文とfor文のどちらを使っても同じ処理を記述することができます。
目安として次のように考えてください。
- while文は、終了条件が決まっている場合
- for文は、繰り返し処理の回数が決まっている場合
繰り返し(ループ)処理の使い方
繰り返し(ループ)処理の基本的なパターンは、次の4種類です。
順番に使い方を見ていきましょう。
- for
- for-break
- for-continue
- for-else
for文
for文でどのように処理が繰り返されるか、フローチャートを見てみましょう。
図1では、<For>と[処理2]がfor文のループです。
<For>の値がn個とすると、[処理2]をn回繰り返して、(終了)します。
それでは、for文をpythonで書いてみましょう。
このfor文を図1に当てはめると、次のようになります。
<For>変数iにnの内容を1個入れる、[処理2] 変数iを表示する 。
3回繰り返す。
Pythonのfor文は、繰り返しの回数を指定するのではなく、for文に渡すリストの要素数が繰り返しの回数となります。
range関数で、連続する数を作ると、繰り返しの回数を指定しているように見えますが、要素の数が繰り返しの回数です。
range関数の詳しい使い方は、こちらをご覧ください。
>>【Python入門】range関数の使い方(for文で繰り返し処理)
for i in range(3): # [0, 1, 2]
print(i)
0
1
2
文字列の個数でも繰り返し処理ができます。
name = ['ポ', 'テ', 'サ', 'ラ']
for i in name:
print(i)
ポ
テ
サ
ラ
for-break文
break文は、forループを中断します。
break文は、if文と組み合わせて使う点に注意して、フローチャートを見てみましょう。
図2では、for文のループの中に、if-else文があります。
if文の[処理3]にbreak文があるので、<条件式>がFalseを返すと、ループ処理が中断されて、(終了)します。
それでは、for-break文をpythonで書いてみましょう。
for i in range(5): # [0, 1, 2, 3, 4]
if i < 3:
print(i)
else:
print('End')
break
0
1
2
End
変数iには0から順に入れられ、変数iが3のときにelseブロックが処理されます。
elseブロックでは、「End」を表示し、break文でforループを中断します。
if文の使い方は、関連情報の記事をご覧ください。
for-continue文
continue文は、forループで処理を中断し、次の処理を実行します。
continue文は、使いどころが思いつかないので、読み飛ばしてもらっても大丈夫です。
if-else文と比較しながら、フローチャートを見てみましょう。
図3では、for文のループの中に、if文があります。
if文には、elseブロックがないので、 <条件式>が Falseのときは処理がありません。
if文の後にある[処理3]は、<条件式>がTrueでも、Falseでも実行されるフローですが、
・Trueの場合: [処理2]を実行 、continue文で処理を中断し、<For>に戻る
・Falseの場合: [処理3]を実行
それでは、for-continue文をpythonで書いてみましょう。
for i in range(5):
if i < 3:
print('True: ', i)
continue
print('False: ', i)
True: 0
True: 1
True: 2
False: 3
False: 4
for-[if-else]文の方が、同じ処理でも構造がわかりやすいです。
図4では、for文のループの中に、if-else文があります。
<条件式>で処理が分岐するフローなので、
・Trueの場合: [処理2]を実行
・Falseの場合: [処理3]を実行
for-[if-else]文をpythonで書いてみましょう。
for i in range(5):
if i < 3:
print('True: ', i)
else:
print('False: ', i)
True: 0
True: 1
True: 2
False: 3
False: 4
for-else文
for-else文のelseブロックは、for文を正常に通り抜けたとき実行します。
・正常に通過: elseを実行
・break文で中断: elseを実行しない
if文のelseではない点に注意して、フローチャートを見てみましょう。
図5では、for文のループをn回繰り返した後に、elseブロックがあります。
break文で、for文を中断したときは、elseブロックの[処理4]を実行しません。
else文を使うことで、for文の終わり方による場合分けができます。
for-else文をpythonで書いてみましょう。
for i in range(5):
if i < 3:
print(i)
else:
print('End', i)
break
else:
print(i)
0
1
2
End 3
変数iが3のとき、if文のelseブロックにあるbreak文で、forループが中断しています。
このコードでは、for文のelseブロックは実行されませんでした。
まとめ
- for文を使って、繰り返し(ループ)処理を作ることができました
- for文の処理を中断させるbreak文とcontinue文の使い方がわかりました