Pythonでfor文を書く
for文とは?
for文とは処理を繰り返す回数を指定して、ループ処理を実行するとき使うコードです。処理コードを書くときはif文やwhile文と同様に先頭に半角スペース4つのインデントを入力してコードを記述します。
また、ループ処理の回数を指定するときはrange()などのオブジェクトを使い、引数にループする回数を指定します。
whileとforの違いは?
前回の記事で解説したwhile文とfor文の違いは、whileは理論式でFalseになったときループ処理を抜けます。一方でfor文はループする回数を指定し、指定回数の処理が完了したらループ処理を抜けます。
while文の終了条件:理論式がFalse
for文の終了条件:指定した回数の処理を完了
for文の書き方
コードの書き方は、forの後に任意の変数名を書き、inの後にオブジェクトを書き:を付けます。改行して先頭に半角スペース4つのインデントを入れ、ステートメントを書きます。
for 変数名 in オブジェクト:
処理A #半角スペース4つのインデントを入れる
インデント入れずにステートメント #for文の終了
オブジェクトにはrange(),zip(),enumerate()などの関数が使えます。
for文の記述例:range()
実際にforを使ってコードを書いてみます。
for文で実行した処理の回数をカウントするにはrange()を使います。ここでは、range()を使って処理を繰り返す回数を5回に指定し、実行結果を確認してみましょう。
#range()を使ったfor文の記述例
for a in range(5) :
print(a)
コードを実行してみます。
0
1
2
3
4
for文の処理が5回実行されていることが確認できました。カウントは0から始まるので、最後の値は引数の値n-1になる点に注意です。
また、range()の引数をカンマで区切ってrange(開始値,回数)のように開始値を指定することも可能です。
#range()を使ったfor文の記述例
for a in range(2,5) :
print(a)
コードを実行してみます。
2
3
4
先ほど説明したようにカウントは0から始まっているので、「2,3,4,5」ではなく「2,3,4」が表示されます。
for文の記述例:リスト
次はfor文を使って、リストから値を取り出した場合を見てみましょう。
リストfxlistから変数currencyに値を取り出してみます。
#リストから値を取り出すfor文の記述例
fxlist = ['usdjpy', 'eurjpy', 'gbpjpy', 'audjpy', 'chfjpy', 'cadjpy']
for currency in fxlist :
print(currency)
コードを実行してみます。
usdjpy
eurjpy
gbpjpy
audjpy
chfjpy
cadjpy
リスト内の値が順番に取り出され、すべての値が取り出したところでfor文の処理が終了します。
Pythonでfor文を中断する:break
for文の途中で処理を中断したい場合は、while文などと同様にbreakを使います。終了と中断の違いは、終了は条件1を満たした場合にループ処理を抜けるのに対して、中断は条件1とは別に設定した中断条件に合致したとき、割り込み的に処理を終了させます。
for文で値が一致したときに処理を中断する
先ほどのリストを使ったコードにbreakを追加してみましょう。
ここではリストから取り出す値がaudjpyだった場合中断することとします。
#for文にbreakを追加
fxlist = ['usdjpy', 'eurjpy', 'gbpjpy', 'audjpy', 'chfjpy', 'cadjpy']
for currency in fxlist :
if currency == 'audjpy' :
break
print(currency)
コードを実行してみます。
usdjpy
eurjpy
gbpjpy
リストが左から順に取り出され、取り出す値がaudjpyになったので処理を中断しています。
Pythonでfor文の処理をスキップする:continue
breakはfor文を中断するのに対して、continueは実行中の処理をスキップして処理を継続します。
for文で特定の値はスキップする
breakの説明で使ったコードをcontinueに変更してみましょう。
breakではaudjpyになるとき処理を中断したのに対して、continueではaudjpyをスキップして処理を継続させます。
#for文にcontinueを追加
fxlist = ['usdjpy', 'eurjpy', 'gbpjpy', 'audjpy', 'chfjpy', 'cadjpy']
for currency in fxlist :
if currency == 'audjpy' :
continue
print(currency)
コードを実行します。
usdjpy
eurjpy
gbpjpy
chfjpy
cadjpy
audjpyがスキップされ、それ以外の値が取り出されました。
Pythonでfor文完了後に処理を加える:while ~ else
for文でもelseを使ってfor文の資料が完了した後に、別の処理を加えることが可能です。
また、下の図の様にbreakした場合はelseの処理は実行されません。continueの場合は、for文の処理が最後まで到達するため、elseの処理が実行されます。
for文完了後にelseで処理を加える
continueの例にelseを追加してみましょう。
else:を書いて改行後、先頭に半角スペース4つのインデントを入れ、追加するステートメントを記述します。今回はfor文の処理が完了した後「完了」の表示を付け加えます。
#for文にelseを追加
fxlist = ['usdjpy', 'eurjpy', 'gbpjpy', 'audjpy', 'chfjpy', 'cadjpy']
for currency in fxlist :
if currency == 'audjpy' :
continue
print(currency)
else :
print("完了")
コードを実行してみます。
usdjpy
eurjpy
gbpjpy
chfjpy
cadjpy
完了
for文の処理の後に「完了」が付け加えられました。
今回のまとめ
・for文は指定回数の処理が完了するまでループする
・for文の処理を中断させるにはbreak
・for文の処理結果をスキップし、処理を継続するにはcontinue
・for文の処理が完了した後に別の処理を追加するにはelse
コメント