Tech-Joho.info

たくさんのデータで同じ処理を繰り返す | Python独学ならTech-Joho(11)

Python独学ならTech-Joho TOP > Python入門カリキュラム > たくさんのデータで同じ処理を繰り返す

For文とは

For文は、リストのようなたくさんのデータのまとまりの中の、一つ一つについて、同じ処理を繰り返すことのできる文です。

例えば、0から3までの数字をリストにまとめ、それぞれの数字をprint文を使って表示するプログラムを、下のように書くことができます。

>>> for i in [0,1,2,3]:
...   print('今の数字:'+str(i))
... 
今の数字:0
今の数字:1
今の数字:2
今の数字:3

* for文とは関係ありませんが、str()関数で、整数(int)型の数値を文字列に変えているところに気をつけて下さい。

For文の構造

For文には、どんなFor文でも常に必要な部分と、どのようなデータをどのような繰り返し処理したいか、によって変わる部分があります。

それを図に書いてみました。

この図の白い字の部分、「for」、「in」、「:」の3つはどんなfor文にも必ず出てきます。
この図の赤い字の部分「一つ一つの要素」、「リストなどのデータの塊」、「「一つ一つの要素」を使った処理」の3つは、その時for文を使ってどのようなことをしたいかによって変わります。

例えば、上の0から3の数字を表示する例では、
「一つ一つの要素」が変数”i”、
「リストなどのデータの塊」が整数のリスト”[0, 1, 2, 3]”、
「「一つ一つの要素」を使った処理」が、”print(‘今の数字:’+str(i))”、というpythonの文で、「今の数字:」という文字列のあと、変数iを文字列に変換してprint文で表示しています。

このように、forの後ろには”i”、”value”、”hensuu”のように「一つ一つの要素」を入れる好きな変数名を、inの後ろには「リストなどのデータの塊」を書くことになります。

For文が動く3つのステップ

このfor文の意味、動き方は3ステップに分けて考えると分かりやすいと思います。

  1. inの後ろに書いた「リストなどのデータの塊」から、順番にデータを1つ取り出す
  2. 取り出したデータが、forの後ろに書いた「一つ一つの要素」に代入される
  3. forの下のブロックに書いた「一つ一つの要素」を使って何か処理をする
  4. ステップ1に戻り、「リストなどのデータの塊」の次のデータを取り出す
  5. 以下、繰り返し…

0から3の数字を表示するfor文の動きを、このステップ毎に考えてみましょう。

ステップ1:inの後ろに書いた「リストなどのデータの塊」から、順番にデータを1つ取り出す

>>> for i in [0,1,2,3]:

「リストなどのデータの塊」は、inの後ろに書いてあります。
この例だと、”[0,1,2,3]”です。

そこから、順番にデータを一つ取り出します。
まずは、一番最初の”0″です。

ステップ2:取り出したデータが、forの後ろに書いた「一つ一つの要素」に代入される

>>> for i in [0,1,2,3]:

「リストなどのデー
「一つ一つの要素」はforの後ろに書いてあります。
forの後ろは”i”です。
つまり、iに0が代入されます。

このあと、for文の下のブロック(字下げされた部分、つまり「「一つ一つの要素」を使った処理」のところ)では、iは0です。

ステップ3:forの下のブロックに書いた「一つ一つの要素」を使って何か処理をする

...   print('今の数字:'+str(i))

「「一つ一つの要素」を使った処理」は、”print(‘今の数字:’+str(i))”、つまり、
‘今の数字:’という文字列を、iという変数に入ってる内容をくっつけてprint文で表示されています。
iは今は0なので、”print(‘今の数字:’+str(i))”は、”print(‘今の数字:0’)”と同じことです。

最終的に、’今の数字:0’と表示されます。

ステップ1に戻り、「リストなどのデータの塊」の次のデータを取り出す

ここまでで、for文の下のブロック(字下げされた部分、つまり「「一つ一つの要素」を使った処理」のところ)が終わりました。
今度は、ステップ1に戻ってまた同じことを繰り返します。

ただし、今度はステップ1では、リストに入っている次のデータを取り出します。
つまり、0のとなりの1です。
先程はiが0でしたが、今度はiに1が代入されます。
すると、最終的に’今の数字:1’と表示されます。

同じ要領で、0, 1, 2, 3とリストの中の数字が順番にiに代入され、そのiを使ってforの下に書いた処理が実行されていきます。
結果として、0から3の数字が全て下のように表示されることになります。

今の数字:0
今の数字:1
今の数字:2
今の数字:3

For文の練習問題

For文の書き方、動き方についてわかりましたか?
練習問題を幾つか用意したので、これをときながら、しっかり理解しているかどうか確認してみましょう。

forとrangeとprintの基本問題(1)



<< 前へ 第10回 場合によって処理を分ける

>> 次へ 第12回 関数を作ってコードを再利用する