Python

【Python初心者】繰り返し文(for文)を学ぼう!

こんにちは(@t_kun_kamakiri)(‘◇’)ゞ

この記事ではPythonの繰り返し処理を行う「for文」について解説します。

この記事で学ぶこと

  1. for文の書き方
  2. while文の書き方(余裕のある人)

繰り返し文は以下の2通りを覚えておきましょう。

  • for文
  • while文

頻繁に使うのはfor文です。

あまり覚えるのを増やしたくないという人はひとまずfor文だけ覚えてしまって、復習する機会があるときにwhile文についても学習すれば良いでしょう。

 
使用環境を示しておかないと混乱しそうなのでちゃんと書いておきます(^^)/
 

【Pythonの使用環境について】
Anaconda
Google Colaboratory
当ブログはこれをメインに使った計算結果です。

関連記事

 

☟書籍も紹介しておきます。
こちらの本がPython初心者が挫折することなく勉強できる本です。
(本記事のようのPython使用環境と異なりますが、とてもわかりやすいので全く問題ありません)

確かな力が身につくPython「超」入門 (確かな力が身につく「超」入門シリーズ)

確かな力が身につくPython「超」入門 (確かな力が身につく「超」入門シリーズ)

鎌田 正浩
2,728円(12/01 02:30時点)
発売日: 2016/03/16
Amazonの情報を掲載しています
スポンサーリンク

繰り返し計算(for文のありがたさを知るために)

まずは、for文などのの繰り返し計算をしない場合のコードを書いてみます。

例1:1~10までの足し算を行う。

【結果】

例2:0~10の値をprint文で出力する

【結果】

例1、例2のどちらも同じような記述を何回も書いていますよね。

  • 例1では、整数を何回も足していく計算
  • 例2では、print文で整数を出力する処理

こういった「同じ処理のものをfor文ですっきりした書き方に変えよう(^^)/」というのが本記事の内容となります。

Pythonでのfor文の書き方

まずは、Pythonのfor文の書き方を解説します。

↑このような書き方をします。

カマキリ

具体例を見ながら学びましょう。

range()関数を使って繰り返す

一定の回数だけ同じ処理を繰り返す処理に「range()関数」をよく使います。

ポイント

  • for文の一番最後に「:」を忘れないこと
  • for文の中の「繰り返したい処理」は、for文の中であることを明確にするために「tabスペース」を設ける。これをインデントと言います。

 

具体的な例を実際にやってみましょう。

【結果】

for文が実行されると、inの後に書いたrange()関数の引数の値(今回は11回)だけ処理を繰り返すということになります。

一点注意として、range()関数の戻り値は0から始まるということです。

カマキリ

絵にするひとつひとつの処理がどのように行われているかイメージしやすいですね。

また、range()関数は以下のように、「開始する値」「終了する値」「ステップ数」を引数にとることもできます。

実際にコードを書いてみましょう。

以下のように、ステップ数を書かない場合はステップ数は1です。

【結果】

「range(5,11)」とすることで、5,6,7,8,9,10の数値がiに代入され、print(i)で値を出力する処理をしています。

以下のように、ステップ数を2にすると2つ飛ばしでiに代入されます

【結果】

このようにrange()関数を使えば指定した数だけ同じ処理を繰り返すことができてとても便利であることがわかりますよね。

では、「1~10までの足し算を行う」処理を以下のようにfor文で書いてみましょう。

【結果】

for文の中の処理をprint文で出力すると、rangeの()の中の数だけ繰り返し処理が実行され、xの値が1が足されているのがわかりますね。

※ちなみに「x = x + 1」という書き方は、冗長なので「x += 1」と書く方が良いですね。

ここまでが繰り返し文(for文)の基本的な内容ですが、下記のような繰り返し処理も可能です。
頻繁に使うので必ず覚えておきましょう(^^)/

for文の中にif文を入れて条件分岐

for文の中にif文を入れて条件によって、if文の中の処理を変えることもできます。
if文を使った条件分岐の記述方法は、以下の記事で詳しく解説をしているのでご参考ください。

前回の記事はこちら

具体的にコードを書いてみましょう。

【結果】

「iが5以下の場合」と「iが5より大きい場合」で処理の方法を変えています。

このようにfor文を使いながら、if文を使う方法はよく使いますので、使い方をマスターしておきましょう(^^)/

そして、このif文を使った方法でfor文の繰り返し処理を途中でやめたり、計算全体の実行をやめることもできます。
その方法について、以下で詳しく見ていきます。

break文を入れて繰り返し処理をストップ

for文の繰り返し処理の中に「break」文の入れることで繰り返し文を終了させることができます。

ある条件のとき繰り返し文のループから抜けたいときに使用することができます。

実行結果

for文はrange()関数によってiの値を「0,1,2,3,4,5,6,7,8,9」と繰り返し値を代入していくのですが、繰り返し処理の中で「 if (i>=5): break➡if文に来たときに、aが5以上であれば繰り返し文を終了します(break)」とする命令を記述しています。
この場合は、i=5のときに繰り返し文が終了するため、a=6の場合の処理が行われていないということになります。

※このbreak文はfor文のループを抜けただけで、全体の計算自体を終了させたわけではないことに注意しなくてはなりません。

exit()関数でプログラムを終了する

先ほどのbreak文と違って、条件を満たすとプログラムの自体を終了させるのに「sys.exit()メソッド」を使います。

※ただし、sys.exit()メソッドをjupyterやgoogle Colabなどでは以下のようなエラーになるため、

先ほどのbreak文を「sys.exit()」として実行してみます。

【結果】

1行目「import sys」で、Pythonの標準ライブラリのsysモジュールをimportしてexit()メソッドを使えるようにしています。

「aが6より大きい」場合の処理が行われていなく、その後のprint文の「’iの最後の値➡’,i」が出力されていないのがわかりますが、「An exception has occurred, use %tb to see the full traceback.」というエラーがでています。

どうやらjupyterやGoogle Colabではsys.exit()は想定していない処理のようでエラーが発生してしまいますが、以下のように「test.py」とテキストファイルにして実行すると、正常に動作しています。

「aが6より大きい」場合には、プログラムが終了しているのがわかります。

continue文で次の繰り返し処理に移る

if文の中にcontine文を書くことで、continue以降の処理を飛ばして次のループの先頭に戻るようになります。

実際にコードを書いてみましょう。

【結果】

このようにcuntine文を書くことで、それ以降の処理を切り上げてfor文のループを回ることができます。

for文の応用編

ここで少し応用です。
先ほどまではrange()関数を使って決まった数だけ繰り返し処理を行うという記述を書きましたが、ここではfor文のinの後を「文字列」「リスト」「辞書型」「タプル型」・・・・などとしたときにどういった動作をするのかを見ていきます。

文字列の文字数の繰り返し処理

まずは、文字列を用意してfor文のinの後に記述してみます。

【結果】

これは文字列の文字を1文字づつ変数aに格納していき、printでaの結果を出力していったということになります。

リスト型の繰り返し処理

リスト型の要素の数だけ繰り返し処理を行うこともできます。

では実際にプログラムを書いてみます。

【結果】

これは「1つ目の要素をaに格納し、printで出力」、「2つ目の要素をaに格納し、printで出力」・・・・ というのをリスト型の要素の数だけ繰り返し処理を行っていることになります。

辞書型の繰り返し処理

辞書型の要素の数だけ繰り返し処理を行うことができます。

では実際にプログラムを書いてみます。

【結果】

これは辞書型の「1つ目のキー(見出し)をaに格納し、printで出力」、「2つ目のキー(見出し)をaに格納し、printで出力」・・・・ というのを辞書型の要素の数だけ繰り返し処理を行っていることになります。

ここで注意すべき点は辞書型のキー(見出し)が繰り返し文の変数aに入っているということです。

キー(見出し)ではなく、内容を変数aに格納したい場合は以下のように記述します。

【結果】

もしくは、以下のように辞書型の記事で学んだように「.values()メソッド」を使うことで同じ出力結果にすることができます。

「辞書型」の記事はこちら

↑このように書いても辞書型の値を取り出すことができます。

while文:指定した条件を満たすまで繰り返す

繰り返し処理を行う記述としては、for文のほかにwhile文があります。

while文は条件が真の場合に処理を繰り返すというもので、以下のような書き方をします。

while文の注意点として、「条件を満たすまで処理を繰り返す」ということになるので、考えてコードを書かないと無限ループになります。

実際にコードを書いてみましょう。
【結果】
x=0から開始して、「x +=1」でxに1を足しながら、「xが10以下(x<=10)」まで処理を繰り返します。

しかし、ここで注意!
while文の処理の中の「x +=1」の記述がない場合は、繰り返し処理の間ずっと「x = 0」であるため、永遠にwhile文のループを抜け出すことができず、無限ループになってしまいます。

カマキリ

無限ループになった場合はプログラムを強制終了してください<(_ _)>

まとめ

今回は、for文とwhile文を使った繰り返し処理をについて学びました。

  1. for文の書き方
  2. while文の書き方(余裕のある人)

特にfor文とif文の組み合わせは必ずと言っていいほど、コードの中で使用しますので是非復習して身に付けておきましょう(^^)/

今回学んだこと

  1. for文の書き方
    ●range()関数を使って繰り返す
    ●for文の中にif文を入れて条件分岐
    ●break文を入れて繰り返し処理をストップ
    ●exit()関数でプログラムを終了する
    ●continue文で次の繰り返し処理に移る
  2. for文の応用編
    ●文字列の文字数の繰り返し処理
    ●リスト型の繰り返し処理
    ●辞書型の繰り返し処理
  3. while文:指定した条件を満たすまで繰り返す

【プロフィール】

カマキリ
(^^)

大学の専攻は物性理論で、Fortranを使って数値計算をしていました。
CAEを用いた流体解析は興味がありOpenFOAMを使って勉強しています。

プロフィール記事はこちら

 

大学学部レベルの物理の解説をします 大学初学者で物理にお困りの方にわかりやすく解説します。

このブログでは主に大学以上の物理を勉強して記事にわかりやすくまとめていきます。

  • ・解析力学
  • ・流体力学
  • ・熱力学
  • ・量子統計
  • ・CAE解析(流体解析)
  • note
    noteで内容は主に「プログラミング言語」の勉強の進捗を日々書いています。また、「現在勉強中の内容」「日々思ったこと」も日記代わりに書き記しています。
  • youtube
    youtubeではオープンソースの流体解析、構造解析、1DCAEの操作方法などを動画にしています。
    (音声はありません_(._.)_)
  • Qiita
    Qiitaではプログラミング言語の基本的な内容をまとめています。
関連記事もどうぞ