こんにちは。IT/経済ジャーナリストで投資家の渡辺です。
何度も繰り返してしまいますが、コンピュータの強みは、同じ処理を正確に、何度でも繰り返してできることです。
そして、もっとも基本的な使い方として、まずはwhile文を紹介しました。
<過去記事>
これはwhileの後ろに等号や不等号、その他の条件が成立している間(whileの意味は、「〜の間」です)は、while文の下に書かれた一まとめの処理をループして繰り返す、というものです。
これだけでもループのプログラムは作れますが、もう1つの繰り返しのやり方があるので、こちらもご紹介します。
ループの最大数が決まっているならforが便利
もう1つのやり方は for文です。
以下のように書きます。
for 変数 in range(数値の範囲):
(インデントで繰り返したい処理を書く)
意味としては、この変数がカウンター(回数を数える)であり、「数値の範囲」で動く、つまり、その範囲の回数分、繰り返し処理をするということです。
実際にwhileと比較しながら、使い方を見ていきます。
1から100の合計は?
たとえば数字を1から100までカウントして合計を出す、なんて算数の問題を考えてみます。
単純に足し算をするだけでなく、1と100の合計は101、2と99の合計も101、、、という組み合わせが50組あるので、101 x 50 = 5,050を出す、なんて解き方もありました・・・。
数字を1からカウントして、100以下の範囲であればループを回して数字をどんどん合計していきます。
そして、100を超えたところでループを終わらせ、結果を表示すれば計算は終了です。
このプログラムを作るには、繰り返し処理のカウントだけで以下の3つの処理が必要です。
- 整数の変数を1つ決め、最初に1を入れておく(最初の値なので、初期値といいます)
- この変数が100以下であるか判定し、100以下なら計算を続ける
- 計算を進めるために、この変数に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()文を使って、回数を指定する。またカンマで区切ることで、開始する数値(始点)、終了させる数値(終点)を指定できる。
コメント