繰り返し文
第3回では、指定した条件に応じて異なる処理を行う条件分岐を用いた構文を学びました。第4回では、指定した条件の回数分、記述した処理を繰り返す方法を学んでいきます。これを 繰り返し文 と呼びます。
繰り返し文 の基本 (for文)
さっそくサンプルコードを見てみましょう。
for i in range(12):
print(i+1, "月")
このコードを実行すると、
1月
2月
3月
…(4月~11月は省略)
12月
のように、1月から12月までが順番に出力されます。for文の基本は、
for 変数 in 繰り返し反復処理できるしくみ :
このような構文が基本となります。繰り返し文でも、条件分岐のときと同様「:」を文末に記述し、以降インデントされた処理が指定された回数だけ繰り返し実行されます。よって、今回はprint(i+1, “月”)という処理が12回繰り返されていることになります。
処理の流れ
- 変数 i に列の最初の値を代入する
- インデントされたブロック内を処理する
- ブロックが終了したら列の次の値がなくなるまで、次の値について1~3を繰り返す
今回変数部分にはアルファベットの「i」を指定していますが、構文上は変数のルールを守っていれば問題ありません。続く「in」のあとに、「繰り返し反復できるしくみ」を記述していきます。サンプルコードではfor文で使われることの最も多い「range()」を使っています。range(個数)という指定をすると、0から1つずつを指定分増やした値の列を得ることが出来ます。今回であればrange(12)と指定しているため、0, 1, 2, 3… 11の12個の値の列を得ることが出来ます。
ここでこの数字の解釈には注意が必要です。
「12回繰り返す」という条件設定になることはまちがいないのですが、得られる値は0から始まるため、
繰り返し1回目 → i = 0
繰り返し2回目 → i = 1
…
繰り返し12回目 → i = 11
といったようにパッと見のイメージと、実際に変数 i に代入されている数値にはズレが生じやすいのです。print()の中では「i+1」と記述することで暦通りの1月~12月という出力が得られています。
range()の応用
実は、range(個数)という指定は、「range(開始値, 停止値, 間隔)」という指定を簡単に記述しています。
次のコードを見てみましょう。
for i in range(1, 7, 2):
print(i)
このコードを実行すると、
1
3
5
上記のような出力が得られます。
range(1, 7, 2)と指定しているため開始値が1、停止値が7、間隔が2となり、
繰り返し1回目 → i = 1
繰り返し2回目 → i = 3
繰り返し3回目 → i = 5
というように、繰り返すごとに i が2ずつ増えていき、i = 7 となった時点で繰り返し処理が終了します(i = 7 となった時点で終了するため、7が出力されない点に注意が必要です)。
for文を使いこなすことが出来れば、プログラムによって表現できる幅がグッと広がります。ぜひ覚えておきましょう。
コメント