Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【Python・制御構文】~for文~①


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210405111435p:plain

おはようございます!Shotaです。今日もPythonにまつわる記事を紹介していきたいと思います。今日は繰り返し構文の「for文」を詳細に解説していきたいと思います。

 

【目次】

 

for文

 続いて繰り返しの構文です。繰り返し構文はforとwhileの2種類ありますが、ここではそのうちの一つであるfor文から説明していこうと思います。

for文はコンテナを利用した繰り返しです。

コンテナには多量のデータが含まれていますので、全てのデータに対して同じ処理を行う作業が必要となることがあります。例えば、全データの平均を計算する際にはまず全データを順番に取り出して変数に足していくというような作業が必要になっていきます。

このような同じ処理を繰り返していくために用意されているのがfor文です。以下のように書きます。

 

for 変数 in コンテナ:

 ---繰り返す処理---

 

for文ではコンテナと変数を必ず用意し、繰り返す処理の部分は必ず右にインデントして記述します。この構文は、コンテナから値を取り出して変数に代入し繰り返す処理を実行していきます。実行した後、またforに戻ってコンテナから次の値を取り出して変数に代入し、また繰り返す処理を実行していきます。

すべての値をコンテナから取り出し終えたら、構文を抜けて進みます。

試しに、以下のコードを書いてみましょう。

 

f:id:ShotaNukumizu_1000:20210418090823p:plain

 

▼実行結果

f:id:ShotaNukumizu_1000:20210418090900p:plain

 

ここでは、リストの変数「data_lst」にデータを予め用意しておき、これを使って合計と平均を算出しています。実行して動作を確認したら、data_lstの内容を色々変えてみて実行してみましょう。値を書き換えても、またデータの数を増減してもきちんと合計と平均を計算できます。

ここでは以下のようにして、data_lstから値を取り出して合計を算出しています。

 

f:id:ShotaNukumizu_1000:20210418091123p:plain

 

for x in data_lst:を用いて、data_lstから順番に値を変数xに取り出し、処理を繰り返しています。繰り返して実行しているのは「total += x」という一文で、data_lstから取り出したnをtotalに加算しています。これで、繰り返しを抜ける際には全部の値の合計がtotalに保管されていることになるのです。

 

rangeを用いた範囲指定

決まった回数を繰り返し処理する作業が必要なこともあります。ごく単純な例として、1から100までの合計を計算する処理を考えてみましょう。これも、forで簡単に整理できます。この時に役に立つのが、range関数で作成できるレンジです。レンジを使うと、一定の整数の範囲をコンテナにまとめることができます。

試しに、以下のコードを書いてみましょう。

 

f:id:ShotaNukumizu_1000:20210418091920p:plain

 

▼実行結果

f:id:ShotaNukumizu_1000:20210418092001p:plain

 

range(101)で、0から100までの整数を「res += n」の式に代入して計算していきます。このように、rangeを使って合計を書く式を書いてみると、2~3行で合計を簡単に出力できます。for文を用いて簡単に出力させることができるのです。

ここでレンジのデータの書き方を再度押さえておきましょう。

 

range(最小値、最大値、ステップ)

 

rangeの引数のうち、最小値とステップ(「いくつおきに値を取り出す」という数字)は省略できます。その場合、最小値は0、ステップは1として計算されます。ただし、rangeの最大値は含まれないので書く際には十分に注意して下さい

辞書でforを使う

 for文では、原則どの種類のコンテナでも扱うことができますが特に注意しておきたいのが辞書型のデータです。

辞書はキーワードで値を管理しています。これもforに応用できます。

 

for 変数 in 辞書:

 

このように記述していきますが、変数に取り出されるのは「キーワード」のみであることには注意して下さい。値を利用するには、このキーワードで辞書から値を取り出す必要があります。

試しに、以下のコードを書いてみましょう。

 

f:id:ShotaNukumizu_1000:20210418093351p:plain

 

▼実行結果

f:id:ShotaNukumizu_1000:20210418093426p:plain

 

実行すると、変数data_lstに保管されている一つ一つの項目を表示し、最後に合計と平均を出力します。ここでは、data_lstに各教科名をキーワードにして点数のデータを保管しています。ここから、forを使って教科名と点数データを以下のように取り出しています。

 

f:id:ShotaNukumizu_1000:20210418093639p:plain

 

for s in data_lst:で変数sに取り出されるのは、data_lstに保管されているデータのキーワードです。したがって、値はそこからdata_lst[s]という形で取り出すように利用することになります。この「forで取り出されるのはキーワードだ」という点さえ間違えなければ、辞書によるforの利用は決して難しいものではありません。

まとめ

【本日のまとめ】

  • forは、コンテナから順番に値を取り出して処理を行うための構文。繰り返して実行する部分は右にインデントしてから書くこと
  • 辞書をforで利用する際には、取り出されるのは値ではなくキーワード、これをベースに改めて辞書から値を取り出す必要がある
  • rangeをforで利用する際には、range()の引数のうち最大値は含まれないことに十分注意する。特に何らかの設定をしない場合、最小値やステップは省略して書いても構わない

 

 

本ブログでは、こんな感じでPythonにまつわる情報や基本的な知識、Pythonの操作方法やニュースをたくさん紹介していきます。毎週日曜日に、普段とは趣向を変えて有名な自己啓発本・ビジネス書を要約・考察するブログを書いていきます。

この記事がいいと思った人はSNSにシェアしてくれると非常に嬉しいです!

明日は「for文」について紹介していきます。

今日も最後まで読んでくださりありがとうございました!

 

 

【参考図書】

gihyo.jp