LoginSignup
1
0

More than 5 years have passed since last update.

Pythonについて vol04.for文

Posted at

今回は繰り返しの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文の外に出せば、いくつまで実行されたのか表示されます。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0