まだまだ繰り返しまくる 〜for文を使う

プログラミングの基礎

こんにちは。IT/経済ジャーナリストで投資家の渡辺です。

何度も繰り返してしまいますが、コンピュータの強みは、同じ処理を正確に、何度でも繰り返してできることです。

そして、もっとも基本的な使い方として、まずはwhile文を紹介しました。

<過去記事>

繰り返し処理はコンピュータの得意技 〜while文を使う

これはwhileの後ろに等号や不等号、その他の条件が成立している間(whileの意味は、「〜の間」です)は、while文の下に書かれた一まとめの処理をループして繰り返す、というものです。

これだけでもループのプログラムは作れますが、もう1つの繰り返しのやり方があるので、こちらもご紹介します。

ループの最大数が決まっているならforが便利

もう1つのやり方は for文です。

以下のように書きます。

for 変数 in range(数値の範囲):
(インデントで繰り返したい処理を書く)

意味としては、この変数がカウンター(回数を数える)であり、「数値の範囲」で動く、つまり、その範囲の回数分、繰り返し処理をするということです。

実際にwhileと比較しながら、使い方を見ていきます。

1から100の合計は?

たとえば数字を1から100までカウントして合計を出す、なんて算数の問題を考えてみます。

小学校6年分の算数が教えられるほどよくわかる (BERET SCIENCE)

単純に足し算をするだけでなく、1と100の合計は101、2と99の合計も101、、、という組み合わせが50組あるので、101 x 50 = 5,050を出す、なんて解き方もありました・・・。

数字を1からカウントして、100以下の範囲であればループを回して数字をどんどん合計していきます。

そして、100を超えたところでループを終わらせ、結果を表示すれば計算は終了です。

このプログラムを作るには、繰り返し処理のカウントだけで以下の3つの処理が必要です。

  1. 整数の変数を1つ決め、最初に1を入れておく(最初の値なので、初期値といいます)
  2. この変数が100以下であるか判定し、100以下なら計算を続ける
  3. 計算を進めるために、この変数に1を足す

これをwhileで書くと、以下のように3行に分けてカウント処理を書くことになります。

counter = 1 #カウントを1から開始する
result = 0 # 計算結果を入れていく変数
while counter <= 100:
   result = result + counter
   counter = counter + 1

print(“Result: “, result)

最後に合計した結果を表示して終わります。

for文なら1行で済む

カウントする範囲が決まっているなら、for文の方が1行で済むので、コンパクトなコードが書けることになります。

上記のコードをforで書き直してみます。

赤字の行が示すように、何と繰り返しの指定が1行で済んでしまいます。

result = 0 # 計算結果を入れていく変数
for counter in range(100):
   result = result + counter

print(“Result: “, result)

ところが!!!

 

合計が合いません。

本来、5050になるはずが、4950になりました。

100ほど足りません。

range()の使い方を理解しよう

range()で数値の範囲を指定するとき、これはコンピュータのプログラミングのセオリーですが、0から数えることになります。

たとえば、100を数える場合、1から100でなく、0から99ということになります。

そのため、99でカウントが終わってしまい、最後の100がカウントされないので、結果が100ほど足りなくなったのでした。

 

あらためて1から100をカウントする

ということで、1から100までカウントしたいときは、その次の101まで指定します。

result = 0 # 計算結果を入れていく変数
for counter in range(101):
   result = result + counter

print(“Result: “, result)

これで0から100までカウントされます。

またカンマで区切ることで、数値の範囲を指定できます。

たとえば、1から100まで指定したい場合は、以下のようになります。

range(1, 101)

最初の1は、カウントの起点となります。

ただし実際に100個を数える場合は、カウントする数字は0〜99になるので、101と指定します。

つまり、101と指定することで、1から100までになるわけです。

 

<今日の要約ノート>

・Pythonで同じ処理を何度も繰り返して実行させたい時、もし繰り返したい回数が決まっていればfor文が便利。range()文を使って、回数を指定する。またカンマで区切ることで、開始する数値(始点)、終了させる数値(終点)を指定できる。

コメント

タイトルとURLをコピーしました