ループを説明するまえに、Pythonのプログラムのブロック構造について簡単に紹介しておきます。
C,C++,Java,JavaScript,PHPなどの言語では、プログラムのブロック構造は{}で表します。
1: for(i=0;i<10;i++){
2: printf("%d", i);
3: }
このC風のプログラムでは、1行目の{と3行目の}の間がループの範囲になります。
同じプログラムをPythonで書くと、
1: for i in range(10):
2: print i
となります。Pythonでは、インデント(文字の左端の場所のずれ)以外に何も必要ありません。逆にいうと、インデントが文法上大きな意味を持っています。
インデントにはスペース(もちろん半角でお願いします)とタブを使えますが、混ぜると大変なことになるので、どちらか片方を使うようにしましょう。
for in を使うと、リスト内の各要素に対して処理を実行できる。
>>> for x in [1,2,3,4,5]:
... x
...
1
2
3
4
5
リスト内の値は数字でなくてもよい。
>>> for c in ["a","b","c","d","e"]:
... c*5
...
'aaaaa'
'bbbbb'
'ccccc'
'ddddd'
'eeeee'
10回ループなどの場合はrange()関数を使うとよい。
>>> for i in range(10):
... i,i*i
...
(0, 0)
(1, 1)
(2, 4)
(3, 9)
(4, 16)
(5, 25)
(6, 36)
(7, 49)
(8, 64)
(9, 81)
range関数は、実際にはリストを返している。
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
変則的なループ範囲の指定はrange関数の第2引数、第3引数を使えばよい。
>>> range(5,10) #5からスタート
[5, 6, 7, 8, 9]
>>> range(0,10,2) #step 2
[0, 2, 4, 6, 8]
>>> range(9,-1,-1) #step -1
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
2重ループ
>>> for i in range(1,10):
... for j in range(1,10):
... print i*j, #最後に,を入れると改行しない
... print #改行だけする
...
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
以上でループ(第1回)は終わりです。
0 件のコメント:
コメントを投稿