今回は繰り返しのfor文です。次回は繰り返しのwhile文をやるつもりです。
pythonのfor文はtcshで言うところのforeach文と同じで、
複数データを順番に処理する、という使い方をします。
配列や辞書などと一緒に使われます。
使い方
list = ['a', 'b', 'c', 'd']
for i in list:
prinf(i)
iにlistの要素が順番に格納されます。実行結果は、
a
b
c
d
となります。
またrange()と一緒に使うこともあります。
range()は指定の回数、0からカウントします。
range(5)だと0~4、range(1,6)だと1~5、range(1,10,2)だと1,3,5,7,9と2つづ増えます。
range(start,stop,step)とすると、startからstop-1までstepづつカウントアップ。という感じです。
数字が1つだとstartには0が入って、stopにはその数字が入ります。
ってどういう定義してるんだ?と思ったら、2つのrange定義されているそうです。
range(stop)
range(start, stop[, step])
貼り付け元 https://docs.python.jp/3/library/functions.html#func-range
なるほど。そうだよな。第1引数を省略可能ってなんだよって思いました。
あとfor文で使われるのはbreakとcontinueとelseです。
for文でもelseが使えます。使用例です。
for i in range(100):
if i % 10 == 0: # 10の倍数の時
print('現在' + str(i) + 'です。')
continue
print('処理中です。')
if i == 85:
print('処理を中断しました。')
break
else:
print('この処理は' + str(i) + 'まで実行しました。')
というのを作ってみたんですが、breakするとelseは処理されないんですね。。。
通常は「処理中です。」が表示されますが、
10の倍数の時だけ「現在xxです。」と表示され、continueがあるのでその時点で次の数字に進みます。
「処理中です。」は表示されません。
また85になるとbreakがあるので、for文が終わります。elseも含め後の処理は実行されません。
なので、breakをコメントアウトして実行すると、i=99で繰り返し処理が終わり、最後に「この処理は99まで実行しました。」が表示されます。
または最後のprintをfor文の外に出せば、いくつまで実行されたのか表示されます。