【Python】よくわかるfor文の書き方、rangeの使い方【入門第21回】
目次
for文とは?
こんにちは、narupoです。
今回はPythonのfor文をやりたいと思います。
for
文は、単純作業を自動化したい時に使われます。
たとえば幽霊が皿を数えるとしましょう。
皿を数えるごとに「皿がn枚……」とprint
するわけです。
皿が100
枚とかあったらめんどくさいですよね。
でもfor
文が使えれば簡単に書くことが出来ます。
この記事では↓を見ていきます。
for文の書き方
rangeの使い方
rangeの正体
for
文はif
文と同じく、プログラミングでは無くてはならないメジャーな文です。
この記事で覚えておきましょう。
for文の書き方
for
文は↓のように書きます。
:::python
for i in range(4):
print(i)
このfor
文は「4
回繰り返せ」というfor
文です。
このfor
文を実行すると、↓のような結果になります。
0
1
2
3
1つずつ見ていきましょう。
まずfor
の部分です。これはそのまま、for
と書くのが約束です。これがfor
文と言われるゆえんです。
次にi
ですが、これはカウント変数と呼ばれています。
↑のfor
文ではコロン(:
)以下のインデントされたコードが4
回実行されますが、回数が増えるごとにこのカウント変数の値が増加します。
次にin
ですが、これはfor
文の一部です。
その次のrange(4)
は、値の範囲を設定しています。range()
の中の数値が繰り返す回数です。
i in range(4)
というのは、range(4)
からカウント変数を取り出していると見ることも出来ますね。
その次にコロン(:
)を書きます。そしてこのコロン以降のインデントされたコードが、for
文で実行されます。
つまり、↑のfor
文は↓のように捉えることが出来ます。
for カウント変数 in range(繰り返す回数):
print(カウント変数)
先ほどのfor
文を改造して8
回繰り返すようにして見ましょう。
その場合は↓のようにします。
:::python
for i in range(8):
print(i)
range(4)
がrange(8)
になっていますね。
カウント変数の出力方法も変えてみましょう。
:::python
for i in range(8):
print(i, '回目のループです')
↑のコードの実行結果は↓のようになります。
0 回目のループです
1 回目のループです
2 回目のループです
3 回目のループです
4 回目のループです
5 回目のループです
6 回目のループです
7 回目のループです
このようにカウント変数は0
ベース(0
オリジン)でカウントされます。
コロン(:
)以降のインデントされたコードはもちろん複数書くことができます。
たとえば↓のようにです。
:::python
for i in range(2):
print('これが何回目のループか')
print('おれたちゃ知らない')
print('知りたくもない')
↑のコードの実行結果は↓のようになります。
これが何回目のループか
おれたちゃ知らない
知りたくもない
これが何回目のループか
おれたちゃ知らない
知りたくもない
rangeの使い方
for
文でループの方法を制御するには、range
の使い方を覚える必要があります。
たとえば0
から4
までループを回したい時は↓のようにしました。
:::python
for i in range(4):
print(i)
これは↓のように書き直すことも出来ます。
:::python
for i in range(0, 4):
print(i)
range
がrange(0, 4)
になっていますね。
これは「0
から4
より下まで」という意味です。
range(4)
のようにすると、range
は勝手にrange(0, 4)
のように解釈します。
よって、range(4)
と書いてもrange(0, 4)
と書いても同じ意味になります。
「2
から4
より下まで」という条件でループしたい場合は↓のようにします。
:::python
for i in range(2, 4):
print(i)
↑のコードの実行結果は↓のようになります。
2
3
開始位置が2
からになり、終了位置が4
より下までになっています。
range
はデフォルトでは1
ずつカウントします。
このカウント量を変更したい場合はrange
の3番目に数値を指定します。
:::python
for i in range(0, 4, 2):
print(i)
↑のコードの実行結果は↓のようになります。
0
2
カウントが2
ずつになっていますね。
もちろん3
にしたり10
にしたりすることも可能です。
:::python
for i in range(0, 9, 3):
print(i)
for i in range(0, 50, 10):
print(i)
3番目の数値は負数を指定することも出来ます。
負数を指定するとカウント変数を減らしていくことが可能です。
たとえば「4
から0
より上まで1
ずつ減らしていく」場合は↓のようにします。
:::python
for i in range(4, 0, -1):
print(i)
↑のコードの実行結果は↓のようになります。
4
3
2
1
負数も-2
とか-10
とか、好きな値を指定できます。
rangeの正体
ここらへんはちょっと難しい話なので、興味のない人はスルーしてOKです。
range
とはいったいなんなのか? という話です。
range
はPythonに組み込まれているクラスです。
いままでtype
というのも使ってきましたが、このtype
もクラスなので、同じものです。
このようにPythonには最初から組み込まれている(最初から何もしなくても利用できる)クラスや関数やオブジェクトがたくさんあります。
range
にカッコ(()
)をつけると、Pythonはrange
クラスからオブジェクトを生成します。
そのオブジェクトはfor
文で回せる仕様になっています。
このようなオブジェクトをPythonではシーケンス型と言います。
シーケンス型のオブジェクトはrange
のほかにもlist
やtuple
があります。
おわりに
for
文は機能が多いので、次回もfor
文をやりたいと思います。
基本的なことはこの記事に書いてあるので、なんとなーくfor
文を使えるようになりたい人はこの記事を読むようにしてください。
for
文を覚えると、プログラミングのだいご味である「大量の単純作業の自動化」が可能になります。
for
文を使えるようになってパソコンの性能をいかんなく発揮しましょう。
以上、次回に続きます。
また見てね