次に「繰り返し」について学びます.
プログラミングにおいては,同じ処理を何度も実行させたいときがあります. 次のコードを見てみましょう.
x = 0
x = x + 1
print('xの値は{0}です.'.format(x))
x = x + 1
print('xの値は{0}です.'.format(x))
x = x + 1
print('xの値は{0}です.'.format(x))
x = x + 1
print('xの値は{0}です.'.format(x))このコードでは,「 x に 1 を足して結果を出力させる」ことを4回繰り返しています.
このコードの実行結果は次のとおりです.
xの値は1です.
xの値は2です.
xの値は3です.
xの値は4です.
'x'の中身が上書きされて,表示される数値が1ずつ増えていることがわかります.
4回繰り返すだけならコードの量は大したことはありませんが, これが10回,100回...ともっと処理を繰り返したいときがあります. そうなると,単にコピー&ペーストするにも負担が大きくなりますし,長いコードとなって読みにくくなります.
そういった際に,繰り返し処理(forループ) が役に立ちます. 次のコードは上のコードをforループで書き換えたものです.
x = 0
for i in range(4):
x = x+1
print('xの値は{0}です.'.format(x))3行目の for は「次のブロックを繰り返し処理する」ことを意味します.
つまり,4~5行目のブロックで書いた「 x に 1 を足して結果を出力させる」ことを繰り返してくれます.
繰り返す回数は for と同じ行の in のあとで指定できます.ここでは range(4) と書いています.
「range」は「範囲」を意味する英単語ですね.range( )の括弧内の数値で範囲を指定します.
そして range(3) は 「0~3 の4つの数字」を示します.
Pythonでは 0 がスタートの数値となりますので,範囲は 1~4 ではなく 0~3 になることに注意です.
念のため,上のコードの実行結果を確認しましょう.
xの値は1です.
xの値は2です.
xの値は3です.
xの値は4です.
それでは for ループの書き方について簡単にコメントします.
- 次の形式で繰り返し処理を行う.
for 変数 in シーケンス:
繰り返し処理したいコード- シーケンス部分で繰り返しを制御する.例えばシーケンス部分に
range( )を書き,括弧内に繰り返し総数を指定する. - シーケンス部分にリストを使用した場合,繰り返しごとにリスト内の要素を順番に取り出す.繰り返し総数はリストの要素数となる.
数字や文字列をまとめて格納する「リスト」という形式がPythonには用意されています.
使い方は簡単で,角括弧 [ ] の中に数字や文字を入れてカンマで区切るだけです.
例えば,下のようにリストを作ることができます.
Nums = [1, 2, 3, 5, 7] # 数字を並べたリスト
Fruits = ['オレンジ', 'りんご', 'バナナ'] # 文字列を並べたリストまた,リストに要素を追加することもできます.次のコードを眺めてみましょう.
Fruits.append('キウイ')
「append」は「追加する」という英単語です.つまり Fruits に追加するので,Fruits.append( ) と書きます.削除などもできますが,各自で調べてみてください.
リストを使って for ループを作ることもできます.
それではコード 05_for_check.py を見てみましょう.
実行結果は次のようになります.
1番目に好きなフルーツはオレンジです.
2番目に好きなフルーツはりんごです.
3番目に好きなフルーツはバナナです.
4番目に好きなフルーツはキウイです.
このコードにあるリストを使った for ループの命令部分を見てみましょう.
for fruit_ in Fruits:これは,ループのたびに Fruits の要素を先頭から順に取り出し, 変数 fruit_ に代入することを意味します.
なので fruit_ には1ループ目は 'オレンジ' が入って処理ブロックを処理します.2ループ目は fruit_ に 'りんご' が入って処理ブロックを処理して…を繰り返します.
リスト Fruits は append('キウイ') で要素を追加した結果,要素数が全部で4になるので,for ループの繰り返し総数は4回となっています.
ちなみに,append によって追加される要素はリストの末尾になります.たしかに「キウイ」が最後に出力されていることが確認できます.
先ほどの 05_for_check.py にある変数 i に注目しましょう.
変数 i は for ループを繰り返した回数をカウントする役割を持っています.
まず for ループが始まる前に i = 1 と初期値を与えます.
そして for ループ内の i = i + 1 で,繰り返しごとに i の値を1ずつ増やしています.
これは出力される表示の「○番目」の数字からも確認することができます.
このような「1ずつ増える」処理を「インクリメント」と呼びます.
インクリメントは for ループではよく使います.
リスト内の要素は, [ ] と数字で取り出すことができます.
例えば,次のコードはリスト Alphabet の1番目の要素と4番目の要素を取り出して表示しています(0番目から数えてです).
Alphabet = ['A', 'B', 'C', 'D', 'E']
print(Alphabet[1]) # A
print(Alphabet[4]) # Eそれではこの性質を利用して for ループを作ってみましょう.
コード 05_for_exercise.py を修正して,先ほどの 05_for_check.py と同じ結果が出力されるようにしましょう.
ただし,コードにある for ループ
for k in range(4):には手を加えないでください. k にはループを繰り返した回数(0からスタート)が入ります.
次のリスト内の要素をすべて足した結果を表示するコードを書きましょう.
for ループをうまく使ってください.
Numbers = [1, 1, 2, 3, 5, 8, 13, 21, 34]ヒント: リスト
Numbersの要素を1つずつ取り出し,足し合わせます.forループの前にあらかじめ変数result = 0を用意して,要素を足し合わせていきましょう.
次のリストの要素にある 'オレンジ' の個数を数えましょう.
for ループと if 文をうまく使ってください.
A = ['オレンジ', 'りんご', 'バナナ', 'オレンジ', 'ぶどう', 'ぶどう', 'オレンジ']ヒント:
if文を使って,リストAの要素ごとに 「'オレンジ'と等しいかどうか」を判定して,等しい場合に結果を保存する変数をインクリメントします.
次のリストの要素にある 'りんご' の個数と 'ぶどう' の個数を数えましょう.
for ループと if 文をうまく使ってください.
A = ['オレンジ', 'りんご', 'バナナ', 'オレンジ', 'ぶどう', 'ぶどう', 'オレンジ']
B = ['りんご', 'オレンジ', 'オレンジ', 'ぶどう', 'りんご', 'ぶどう', 'オレンジ']なお、それぞれの 'りんご' と 'ぶどう' の個数を表示し、 'りんご' と 'ぶどう' の合わせた個数も表示する.