本記事はPython での繰り返し(ループ)処理について解説していきます。
for 文について
Python には for 文と言われる文法があります。文法についてはこちらの記事を参考にしてください。
for 文を記述すると、同じ処理を繰り返し行うことができるようになります。以下のように記述します。
for 変数 in 繰り返し可能なオブジェクト:
処理1
処理2
・
・
・
for 文の挙動について実際に確認してみましょう。このブログからプログラミングを始めた方は「for_practice」としてファイルを実行してください。ファイルの作成方法は以下の記事を参考にしてください。
例文として以下のコードを実行します。
excluding_tax = [100, 120, 150]
tax = 1.08
including_tax = []
for i in excluding_tax:
money = round(i * tax)
including_tax.append(money)
including_tax
以下のコードを実行すると次の結果が出力されます。
for 文を実行することによって、繰り返しで処理を実行することができました。
組み込み関数 range, enumerate について
Python では、for 文との相性が良い組み込み関数が定義されています。組み込み関数については、こちらの記事を参考にしてください。
range
range は Python で使用されている組み込み関数( class 型)です。以下のように記述します。
range(スタートする値, 終了する値, 何個おきに出力するか)
# スタートする値は省略できます。省略した値は 0 として入力されます。
# 「何個おきに出力するか」は省略できます。省略した値は 1 として入力されます。
range のインスタンスを作成してみましょう。以下のコードを実行してみてください。
clf = range(0, 10, 1)
print(clf)
実行すると以下の結果が出力されます。
range メソッドである index や直接で取り出すことも可能ですが、実用的ではないので、for 文を使って取り出してみます。range と for 文を組み合わせて range に含まれる値を1つずつ取りだしてみましょう。以下のコードを実行してみてください。
for i in range(0, 10):
print(i)
実行すると以下のようになります。
このように、range では、「スタートした値」から出力し、「終了する値」の一つ前の値まで出力します。
enumerate
enumerate は Python で使用されている組み込み関数( def 型)です。入力したリスト型、タプル型などの型を順番通りに出力しますが、それと同時に実行した順番を返します。以下のように記述します。
enumerate(iterable, スタートする番号)
# iterable はリスト型、タプル型、レンジ型など
range と同様に、for 文を使って取り出してみます。以下のコードを実行してみましょう。
num = ["a", "b", "c"]
for i, j in enumerate(num):
print(i, j)
実行すると以下のようになります。
“a”, “b”, “C” の順番で実行されるため、”a” の時に 0、”b” の時に 1、”c” の時に 2 が出力されます。スタートする番号を変更すると、出力される番号が変更されます。例えばスタートする番号を 5 に設定してみます。実行したコードは以下の通りです。
num = ["a", "b", "c"]
for i, j in enumerate(num, 5):
print(i, j)
実行した結果は以下のようになります。
出力する値が変更した値が変更されたことを確認してください。
while 文について
Python には while 文と言われる文法があります。while 文を記述すると、記述した条件が満たされるまでループが行われます。具体的には以下のように記述します。
while 条件式:
処理1
処理2
・
・
・
条件式を工夫しないと、永遠にループが回ってしまうので注意してください。(実行を中止すればループは止まりますが。)while 文の挙動について実際に確認してみましょう。次のコードを実行してみてください。
n = 0
while n < 3:
n = n + 1
print(n)
実行結果は以下のようになります。
n が 3 になった結果、while分のループが終了したため、n=3でループを抜け出しました。
ループで実行できる便利な処理
continue
一部のループの処理をスキップすることができます。以下のように記述します。
for i in リスト型など:
処理1
処理2
・
・
・
if スキップしたいループ:
continue # これ以降の処理は実行されません。
処理1
処理2
・
・
・
この処理を実行すると、if で指定した条件をスキップして実行することができます。実際にスキップできているか確認してみましょう。以下のコードを実行してみてください。
for i in range(0, 5 + 1):
if i == 0:
print("0 skip")
continue
print("number: ", i)
コードを実行した結果は以下のようになります。
0 の時 print(“number: “, i) がスキップされていることが分かります。
break
ループの処理を終了することができます。以下のように記述します。
for i in リスト型など:
処理1
処理2
・
・
・
if 終了したい条件:
break # この処理でループが終了します。
処理1
処理2
・
・
・
この処理を実行すると、if で指定した条件が起こった場合、for 文のループを終了します。実際にループが終了できているか確認してみましょう。
stop = True
if stop == True:
stop_num = 3
else:
stop_num = -1
for i in range(0, 5 + 1):
print("now :", i)
if i == stop_num :
print("Finish roop")
break
コードを実行した結果は以下のようになります。
ループが 3 になったときに終了していることを確認してください。また「stop=False」にすると実行結果は以下のようになります。
ループ 3 との実行結果を比較してください。
else
ループを実行した後にのみ、処理を実行することができます。break で処理を実行した場合は処理を行わないので注意して下さい。以下のように記述します。
for i in リスト型など:
処理1
処理2
・
・
・
else:
処理1
処理2
・
・
・
この処理を実行すると、for 文のループが終了した後に else 内の処理が実行されます。以下のコードで実際に処理が行われているか確認してみましょう。
stop = False
if stop == True:
stop_num = 3
else:
stop_num = -1
for i in range(0, 5 + 1):
print("now :", i)
if i == stop_num :
print("Finish roop")
break
else:
print("Complete roop!!!")
実行すると以下の結果が出力されます。
また break が実行されると、else の中身が実行されないことを確認します。「stop=False」にすると実行結果は以下のようになります。
breakが行われると、else が実行されないことが確認されました。
最後に
今回は for 文を使用した処理を解説しました。
本記事は以上になります。ありがとうございました。