for 文(繰り返し処理)の使い方
こんばんは☆蓬莱梨乃です♡
今日は先日予告した for 文の使い方について説明します。
for 文とは同じ処理(動き)を繰り返したい時に使用します。
例えば、
print (1)
print (2)
print (3)
print (4)
print (5)
・・・
と 100 まで表示したい場合に、同じように 100 まで書けば可能なのですが、1000 とか言ったら骨が折れる作業ですよね?
(あたたたたたっ!(笑))
ですが!
そんなことをしなくても、大丈夫なのです!!
この for 文を使えば、めんどくさいコピーとかしなくても OK !
早速説明します♡
for 文の使い方
さて、やり方はいくつかあるので、順に紹介していきます。まずは 1 つ目の方法。
リストから値を 1 つずつ取り出す方法
これはまた後日このテーマで取り上げますが、リスト、タプル、辞書など、複数の値が格納されているオブジェクト(うーん、「オブジェクト」というのもきっとあまり聞かない難しい言葉ですよね。ここでは「部品」みたいな意味だと思っていただければ・・・が)のことで、イテラブルと呼ばれています。←また変な横文字が・・・覚えにくい。まぁ今後も補足し続けるので覚えなくていいですよ(笑)
【リスト】
イテラブルの 1 つ、リストとは [] でくくって、それぞれの値を “,(カンマ)” で区切ることにより、作成することができます。
例えば、
fruits = [“りんご”, “みかん”, “バナナ”, “ブルーベリー”]
(文字列なので ” ” でくくってくださいね~)
とします。これで fruits という名前のリストに、”りんご”, “みかん”, “バナナ”, “ブルーベリー” という果物が入っているということになります。
そして
for name in fruits:
<Tab>print (name)
(print の頭はインデント(字下げ)しないといけないのですが、インデントは Tab キーを押して行います。上記例では本来 Tab が 1 つ入るのですが、ブログで Tab を表せないので、<Tab> と記載しています。)
とすると・・・
こんな感じに
りんご
みかん
バナナ
ブルーベリー
と、 fruits リストから順番に取り出され、name (リストから取り出したものを入れるために作った変数。名前は何でも良い) に格納される。
そして print (name) で、その name に格納された文字列を順番に表示します。
つまり、
lists = [“list1”, “list2”, “list3, “list4”]
for <好きな変数> in lists: ←最後は : (コロン) をつける
<Tab>print (<好きな変数>) ←繰り返す処理は字下げする。字下げは Tab キーを押す。
という感じです。
また、リストを直接指定し、
for a in [1, 2, 3, 4, 5]:
<Tab>print (a)
などとしても良いです。
上記 “a” に当たる変数は何でも良いのですが、数字の繰り返し処理の場合では、”i” や “n” にすることが一般的に多いようです。
for i in [1, 2, 3, 4, 5]:
<Tab>print (i)
みたいな感じです。
これは、i には integer (整数) の頭文字、n は number (数値) の頭文字であることに由来して、そうすることが慣例となっているからのようです。
【数値の繰り返し処理】
さて、5 とかまでなら良いですが、100 とか 1000 とかになると [1, 2, 3, 4, ・・・] みたいなのもしんどいですよね。
Python にはそういう問題を解消する range 関数というものが存在します。
range 関数は以下のように使います。
range (開始値, 終了値, ステップ)
(ステップはいくつおきに数えるかを設定するもので、省略すると 1 になります。今回ステップは省略します。)
しかし、ここで注意する点があります。
例えば 1 ~ 5 まで、5 回繰り返す場合、単純に
range (1, 5)
と書くと、4 回しか繰り返されません。これは、実は「終了値」というのが、「終了する値未満」という意味で、5 にすると 5 未満である 4 までしか数えられず、
1, 2, 3, 4 の 4 回しか繰り返されないことになってしまうのです。
(いや~、ややこしくて嫌になっちゃいますね(笑))
そのため、
range (1, 6)
と書けば 5 回繰り返されますが、わかりにくいですよね。
そこで、救済策があるのですが、
range (0, 5)
と 0 から数えるようにすれば、すっきりしますので、このように書く例が多いです。
また、range (開始値, 終了値, ステップ) の 開始値も実は省略可能で、省略すると 0 を設定したものと同様になります。
(えっ、そうなの!?先に言ってよ~。と思ったかもしれませんが、本来の仕様の説明もしたかったので、ご了承ください。。。)
つまり、
range (5) とすると
range (0, 5, 1) と同様となり、5 回繰り返されるのです。これは厳密に言えば、5 を指定したから 5 回なのではなくて、
0, 1, 2, 3, 4 と数えられて 5 回繰り返されているということです。
でも、range (繰り返したい回数) と考えると合ってますから、そのほうがわかりやすいですよね(笑)
そんな感じで、100 まで表示したいときはこのように書きます。
for i in range (100)
<Tab>print (i + 1)
こんな感じで出力されます。
まとめ
for 文、ちょっと説明が長くなってしまいましたが、わかりましたでしょうか。
ぜひ、活用していただければ幸いです。
それでは~!蓬莱梨乃でした♡
グッバーイ!!