【Python】for文にrange関数を使って特定回数の繰り返し処理を行う!
Pythonではfor文にrange関数を使用することで特定回数の繰り返し処理を行うことができます。
例えば、5回処理を行う場合以下のようにコードを入力するかと思います。
1 2 |
for i in [0, 1, 2, 3, 4]: 実行する処理 |
5回であればまだこのように記述することも可能ですが、これが100回や1000回など繰り返す回数が多い場合にはとても面倒です。
しかし、range()関数を使用するとプログラムを効率よく記述することができます。
また、range()関数はて9〜11回目の処理行うなどのように繰り返し処理の範囲を設定することができ、2、5、7、9回目だけの処理を行うなど間隔を空けても繰り返し処理を設定できるのでfor文にrange関数はとても相性が良いです。
今回はPyhtonのfor文にrange関数を使って特定回数の繰り返し処理を行う方法 について以下の内容で解説していきます。
⚫︎ 終了値を設定して特定回数の繰り返し処理を行う場合
⚫︎ 開始値と終了値を設定して特定回数の繰り返し処理を行う場合
⚫︎ 開始値、終了値、間隔を設定して特定回数の繰り返し処理を行う場合
⚫︎ 間隔をマイナスに設定して特定回数の繰り返し処理を行う場合
⚫︎ 浮動小数点数で繰り返し処理を行うには
⚫︎ 複数範囲を指定して繰り返し処理を行うには
目次
for文とは
for文とはある処理を繰り返し行いたい場合に使用されます。
同じ文を何度も書く代わりにfor文の中に処理を書くことでその処理を決められた回数繰り返すことができます。
ここでは詳しくは紹介しませんがもし、for文について詳しく知りたい場合はこちらをご参考ください。
range()関数とは
range()関数とは、デフォルトで0から始まり、1(デフォルト)で増減する一連の数値を返すrange型の関数となります。
ここでは詳しくは紹介しませんがもし、range()関数について詳しく知りたい場合はこちらをご参考ください。
特定回数の繰り返し処理を行うサンプルコード
for文とrange()関数で特定回数の繰り返し処理を行うサンプルコードを紹介します。
終了値を設定して特定回数の繰り返し処理を行う場合
終了値を設定して特定回数の繰り返し処理を行なってみます。
0からスタートして、 終了値-1で終了するイメージです。
例
1 2 3 4 5 |
for i in range(10): print(i + 1, "回実行されました。") for i in range(-2): print(i + 1, "回実行されました。") |
出力結果
1 回実行されました。
2 回実行されました。
3 回実行されました。
4 回実行されました。
5 回実行されました。
6 回実行されました。
7 回実行されました。
8 回実行されました。
9 回実行されました。
10 回実行されました。
終了値を10に設定し、i + 1と記載してますので1から10までが出力されています。
その為、iには本来0から9が出力されています。
また、終了値を-2に設定するとか何も取得できず、空で帰ってきます。
開始値と終了値を設定して特定回数の繰り返し処理を行う場合
range()関数に開始値と終了値を設定して特定回数の繰り返し処理を行ってみます。
開始値からスタートして、 終了値-1で終了するイメージです。
開始値 >= 終了値の場合は空になります。
例
1 2 3 4 5 6 7 8 |
for i in range(2,10): print(i, "回実行されました。") for j in range(-2,5): print(j, "回実行されました。") for k in range(5,3): print(k, "回実行されました。") |
出力結果
2 回実行されました。
3 回実行されました。
4 回実行されました。
5 回実行されました。
6 回実行されました。
7 回実行されました。
8 回実行されました。
9 回実行されました。
-2 回実行されました。
-1 回実行されました。
0 回実行されました。
1 回実行されました。
2 回実行されました。
3 回実行されました。
4 回実行されました。
開始値を2、終了値を13へ設定したので2から12までが出力されています。
開始値を-2、終了値を5へ設定したので-2から4までが出力されています。
また、開始値を5、終了値を3へ設定したので何も取得できず、空で帰ってきます。
開始値、終了値、間隔を設定して特定回数の繰り返し処理を行う場合
range()関数に開始値、終了値、間隔を設定して特定回数の繰り返し処理を行ってみます。
開始値 >= 終了値の場合は空になります。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
count = 0 for i in range(3, 15, 2): count = count + 1 print(count,"回実行されました。iの値は" , i) count1 = 0 for j in range(-3, 3, 2): count = count + 1 print(count,"回実行されました。jの値は" , j) count2 = 0 for k in range(16, 15, 2): count1 = count1 + 1 print(count2,"回実行されました。kの値は" , k) |
出力結果
1 回実行されました。iの値は 3
2 回実行されました。iの値は 5
3 回実行されました。iの値は 7
4 回実行されました。iの値は 9
5 回実行されました。iの値は 11
6 回実行されました。iの値は 13
1 回実行されました。jの値は -3
2 回実行されました。jの値は -1
3 回実行されました。jの値は 1
開始値を3、終了値を15、間隔を2に設定したのでiの値は5、7、9、11、
13が出力されています。
開始値を-3、終了値を3、間隔を2に設定したのでiの値は-3、-1、1が出力されています。
また、開始値を16、終了値を15、間隔を2に設定したので何も取得できず、空で帰ってきます。
間隔をマイナスに設定して特定回数の繰り返し処理を行う場合
range()関数の間隔をマイナスにして逆の繰り返し処理を行ってみます。
開始値 <= 終了値の場合は空になります。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
count = 0 for i in range(15, 3, -3): count = count + 1 print(count,"回実行されました。iの値は" , i) count1 = 0 for j in range(15, -4, -3): count1 = count1 + 1 print(count1,"回実行されました。jの値は" , j) count2 = 0 for k in range(15, 17, -3): count2 = count2 + 1 print(count,"回実行されました。kの値は" , k) |
出力結果
1 回実行されました。iの値は 15
2 回実行されました。iの値は 12
3 回実行されました。iの値は 9
4 回実行されました。iの値は 6
1 回実行されました。jの値は 15
2 回実行されました。jの値は 12
3 回実行されました。jの値は 9
4 回実行されました。jの値は 6
5 回実行されました。jの値は 3
6 回実行されました。jの値は 0
7 回実行されました。jの値は -3
開始値を15、終了値を3、間隔を-3設定したのでiの値は15、12、9、6が出力されています。
開始値を15、終了値を-4、間隔を-3に設定したのでiの値は15、12、9、6、3、0、-3が出力されています。
しかし、開始値を15、終了値を17、間隔を-3に設定したので値を取得できず、空で帰ってきます。
浮動小数点数の繰り返し処理を行うには
range()関数で浮動小数点数の繰り返し処理を行うには、round()関数を使用します。
round()関数を使用せずにrange()関数で浮動小数点数を扱うと誤差が生じます。
range()関数だけ使用した例
1 2 3 4 5 |
for i in range(3, 9): j = i * 0.1 print(j) |
出力結果
0.30000000000000004
0.4
0.5
0.6000000000000001
0.7000000000000001
0.8
このように、正しく出力できている値もあれば、誤差が生じている値もあります。
しかし、range()関数でインデックスを設定した後にround関数を使用して実行すると誤差なく正しく出力することができます。
round()関数を使用した例
1 2 3 4 5 |
for i in range(3, 9): j = round(i * 0.1, 1) print(j) |
出力結果
0.3
0.4
0.5
0.6
0.7
0.8
random()関数によってすべて誤差なく正しい値が出力されています。
複数範囲を指定して繰り返し処理を行うには
range()関数で複数範囲を指定して繰り返し処理を行うには、itertoolsライブラリのchain()関数を使用します。
例
1 2 3 4 |
import itertools for i in itertools.chain(range(1, 4), range(12, 15)): print(i) |
出力結果
1
2
3
12
13
14
chain()関数によってrange()関数で複数範囲を指定して繰り返し処理を行っています。
今回のポイント
for文とrange()で特定回数の繰り返し処理を行う
⚫︎ for文とrange関数()で特定回数の繰り返し処理を行うことができる
(0〜10までや3から5まで、0〜10までを2つ間隔を空けるなど特定の回数を設定できる)
⚫︎ range()関数で浮動小数点数の繰り返し処理を行う場合、誤差が生じる為round()関数で誤差を調節する
⚫︎ range()関数で複数範囲を指定して繰り返し処理を行う場合、itertoolsのchain()関数を使用する
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。