Pythonのfor文の基本的な書式は,次の通りである。
- for 変数 in イテレート可能なオブジェクト:
- 処理A
- 処理B
- ・
- ・
- ・
イテレート可能なオブジェクトとは,1つずつ順に値(整数や文字列等)を取り出せるようなもので,文字列やリストなどがあげられる。 for文では,inの後ろで指定したイテレート可能なオブジェクトから1つずつ変数に代入されて,ブロックに記述した処理が繰り返し実行される。
たとえば,次のように1月から12月までの各月の陰暦名称(異称,第5回練習問題1)を出力するプログラムをfor文を用いて表現し直してみよう。
H:\prg1\05> python month.py↵
睦月
如月
弥生
卯月
皐月
水無月
文月
葉月
長月
神無月
霜月
師走
- # coding: shift_jis
- month = ("睦月", "如月", "弥生", "卯月", "皐月", "水無月",
- "文月", "葉月", "長月", "神無月", "霜月", "師走")
- for m in month:
- print(m)
上のプログラムでは,イテレート可能なオブジェクトであるタプルmonthから1つずつ変数mに代入させ, 処理(変数m(陰暦名称)をprint関数を用いて出力)している。 while文を用いて作成したプログラムと比べると,for文の方がすっきりしていることがわかるだろう。
ここで,第4回の授業で学んだ1から100までの整数の和を出力するプログラムをもう一度考えよう。
- number = list(range(1, 101, 1))
- s = 0
- for i in number:
- s = s + i
- print(s)
上のプログラムでは,rangeコンストラクタを用いて,1から100までの整数のリスト[1, 2, 3, 4, ......, 100] を生成し,その生成したリストnumberの合計をfor文を用いて算出している。 ここで,rangeコンストラクタの引数は,start,stop,stepの3つあるのだが,startとstepは省略することができる。 省略した場合,startのデフォルト値は0,stepのデフォルト値は1となっている。
単に1から100までの整数の和を求めるだけであれば,次のプログラムのように表現することが多い。
- s = 0
- for i in range(101):
- s = s + i
- print(s)