前回の記事ではfor文の書き方について確認しました。今回はfor文を使用する際によく一緒に使われるrange関数について確認します。
range関数とは
range関数は連続した数値のデータを生成できる関数になっております。range関数の書き方は以下の通りです。

関数名を最初に書き、括弧の中に数値リテラルを指定します。なお、関数の中に指定するデータの事を引数といいますが、この引数の数によって動きが多少異なります。
引数が1つの場合
引数が1つの場合は、0から指定した数値までの値を生成するrangeオブジェクトというものを作り出します。引数には任意の自然数を指定できますが、生成する値は0から指定した数-1までの連続した数値となります。
なお、引数には0や負の整数を指定した場合は連続した数値は生成されません。

1 2 |
print(range(5)) #range(0,5) |
rangeオブジェクトの中身はrange(0,5)となっていることがprint関数で出力することでわかると思いますが、これは0 ~ (5-1) の数、つまり「0,1,2,3,4」という数字を作り出すよという意味合いを持ちます。
引数が2つの場合
引数が2つの場合は、1つ目に指定した数値から2つ目に指定した数値-1までの値を生成するrangeオブジェクトを作り出します。2つの引数を指定する場合は1つ目の引数の後に「,(カンマ)」を付けます。また、2つ目の引数は1つ目の引数より大きくないと連続した数値が作られることはありません。

1 2 |
print(range(2,5)) #range(2,5) |
引数が3つの場合
引数が3の場合は、2つ目までは上記と同じで3つ目の引数に数を指定した場合、その数値分だけ値がスキップされるようにデータが作られます。例えばrange(1,10,2)とした場合、1から10までのデータが2つ飛びで生成されます。つまり「1,3,5,7,9」の数値が生成されます。数学的に言えば初項1, 等差2 ,で10以下の値を取る等差数列といった感じです。

1 2 |
range(1,10,2) #range(1, 10, 2) |
range関数を使用したfor文
それでは実際にrange関数を使用したfor文の書き方について確認しましょう。書き方はfor文のシーケンス型のデータを指定する個所にrange関数を使用するだけです。

次に、実際のコードを見てみます。引数が1つ、2つ、3つの場合それぞれ見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#引数が1つの場合 for num1 in range(3): print(num1) print("■■■■■■■■■■■■") #引数が2つの場合 for num2 in range(1,7): print("小学校" + str(num2) + "年生です。") print("■■■■■■■■■■■■") #引数が3つの場合 for num3 in range(2,10,2): if num3 % 4 == 0: print(str(num3) + "は4の倍数です。") else : print(str(num3) + "は2の倍数です") |
引数が1つの場合は単純に出力しているだけです。2つの場合では1から6までの数字を使って小学校の学年を出力しました。なお2つ目の引数は6 + 1になっていることに注意してください。
引数が3つの場合は2つ飛ばしで出力しています。またforブロックの中にifブロックを記載し、現在参照している値によって出力する文字列を分岐させています。for文の中にif文を記載するということはよくあることなのでしっかり自分でも書いてみて確認してみてください。なお、察しがつくとは思いますが、forブロックの中にifブロックをかけるということは、for文も同じようにブロックの中に書くことができるのが想像できますね。それはまた別の記事で触れていきます。
今回はここまでです。
お疲れ様でした。
コメント