Python for文 繰り返し構文

python

【Python】for文の使い方について

2020年1月4日

こんにちは。

 

今回は繰り返し構文のうち for 文の基本に関する内容を学習します。

 

本題に入る前に、これまでの学習の流れにについてまとめておきます。

四則演算数値列文字列についてまとめた記事については、以下の記事を参照ください。

STEP 1
python コード サンプル 覚え書き
【Python】数値と文字列について【初心者向け】

続きを見る

変数・論理値・演算子については以下の記事をご参照ください。

STEP 2
python コード サンプル 覚え書き
【Python】変数・論理値・演算子について【初心者向け】

続きを見る

関数の基本については以下の記事をご参照ください。

STEP 3
python コード サンプル
【Python】関数の基本について【初心者向け】

続きを見る

オブジェクトとメソッドの使い方については以下の記事をご参照ください。

STEP 4
python コード サンプル
【Python】オブジェクトとメソッドについて【初心者向け】

続きを見る

if, elif, else文の使い方【制御構文】については以下の記事をご参照ください。

STEP 5
Python 条件分岐 if文
【Python】制御構文・条件分岐の基本について【動画・画像付きで解説】

続きを見る

while文の使い方【繰り返し構文】については以下の記事をご参照ください。

STEP 6
Python 条件分岐 繰り返し while文
  【Python】while文の使い方について【繰り返し構文の基本】

続きを見る

 

前回の while文 に引き続いて、繰り返しの動作を行う構文について学習していきます。while文 の他に、もうひとつ、繰り返し処理を実現する方法が for文 です。

 

入力した数値を加算して、ある所で入力値の平均値を求める」課題のように参加者の人数がプログラムを実行する度に毎回変わる様なケースでは while文 を使用するのが便利です。

 

一方でfor文は最初からプログラムを繰り返す回数が決まっている様な場合には非常に便利です。

 

今回はその様な場合について学習していきましょう。


for文 と while文 の使い方は非常に似ていますが、大きく異なる点はcodeの記載方法のみです。

 

for文 と while文も同じ「繰り返し処理」ですので、for文 でも break や continue を使用する事ができます。

for文の使い方

Python for文 繰り返し構文

早速 for を使った繰り返し処理を記述してみましょう。

以下が出力画面です。
Python or文 繰り返し構文

 

 

 

 

 

 

 

 

ここでfor i in range(11): だけ見ても良く分からないかと思いますので、詳しく見ていきましょう。


Python for文 繰り返し構文
for は繰り返し処理を行います。i は 繰り返し処理で使える変数(カウンタ変数)です。

 

処理が繰り返される度にiの中身が上書きされます。

 

in は、後ろに続く range() から1件ずつ取り出して i に格納するという意味を持ちます。

 

その in の後ろに続く要素は、通常だとリストが該当します。今回は range() という関数を使いますが、この使い方は頻用されるので覚えておきましょう。

 

range() は連続した数値を順番どおり並べて、そこから数値を取得するための関数です。

 

range() で取得した数値を1件ずつ取得して i に格納します。


range() の最後の数値が取得され、繰り返し処理が終了すると for文 によって作られたループが終了します。

 

なお、range(20) と書きましたが、引数を20 とすることで「0 以上 20 未満」の連続する数値を取得することになります。

注意ポイント

最後のコロン : は忘れないようにしましょう。

range()関数について

Python for文 繰り返し構文

 

ここから range() 関数についての説明です。

 

基本的に range() は 0以上となりますが、 5以上としたい場合には、引数を2つにして、最初の引数を 開始の数値 すなわち 5 として, 次の引数を 終了の数値 すなわち 20 としましょう。


では早速 code を書いてみましょう。

出力結果は以下の様になります。
Python or文 繰り返し構文

 

 

 

 

 

 


これにより「5以上 20未満(5から19まで)」となります。

 

また 「3つずつ数値を飛ばしたい」としたいときは、3つ目の引数を追加します。

 

1番目と2番目は先程の 開始の数値 終了の数値 と同じですが、3つ目は 数値間の増分 です。増分を 3 とすることで、+3 ずつの数値の並びにすることができます。

In[]

以下出力結果です。
Python or文 繰り返し構文

 

 



取り出す数値の大きさを 「開始の数値」 の方が 「終了の数値」よりもお大きい様ににし、3つ目の引数である 増分 をマイナスの数値にすることで数値の大きい順で1件ずつ i に収納することもできます。

In[]

出力結果です。
Python or文 繰り返し構文

 




for文 の中に for文 を記述することもできます。

 

その場合、まずは「内側の処理」→次に「外側の処理」→再度、「内側の処理を print」、という流れになります。例えば以下の様な形になります。

In[]

出力結果
Python or文 繰り返し構文












カウンタ変数 i について

上記の xyfor の処理のために用意した変数です。for の外側で xy を参照してはいけません。これは if や while でも同様の事が言えます

課題|エラトステネスのふるいをPythonで実装

Python for文 繰り返し構文

課題| エラトステネスのふるい

課題:「エラトステネスのふるいを実装して下さい。※ エラトステネスのふるいは、素数を求める方法です。」

仕様

  • for を使って 1から200までの連続する整数値を画面に表示する。
  • 素数でないものは表示しない様にする。

まずはご自身でコードを書いてみてください。


※ 2020/01/05に解答をUP予定です。

解答一例| エラトステネスのふるい

以下、解答の一例です。

In[]

単純にエラトステネスの定義にしたがって、ふるいにかけたのみの code です。

 

1〜100までの素数の場合には 7 を除いた 7 の倍数は素数ではないとしてふるいにかけると全ての素数が出てきます。

Python for文 繰り返し構文出力後の結果は左の様になります。(最も上にある2, 3が切れてしまっています)


また、他にも試し割り法や SymPy というライブラリを使用して簡単に列挙する方法など、色々な方法がありますので試してみて下さい。

 

 


-python
-, ,

Copyright© Tommy blog  , 2024 All Rights Reserved.