こんにちは!ぼりたそです!今回はPythonの繰り返し処理について記事をまとめまてみました。
この記事は以下のポイントでまとめています。
- 繰返し文とは?
- while文
- for文
同じ処理をするために同じコードを何行も書くのが面倒くさいなんて思ったことあるんじゃないでしょうか?そんなときに登場するのが繰返し文なのです。マスターすればコードの効率化間違いなしですのでぜひみていって下さい!
繰返し文とは?
繰返し文とは文字通り、ある一定の処理を繰返す構文のことです。冒頭でも少し触れたように同じ処理をするために同じコードを何行も記述するのは面倒ですよね。そんな時にはこの繰返し文が役に立つのです。繰返し文は主に以下二つの手法を用いて実行します。
- while文
- for文
これより、この二つの手法について詳細に解説していきます。
while文
まず一つ目に紹介する繰返し文はwhile文です。whileは設定した条件を満たす限り繰返し処理を実行してくれる構文になります。記述方法としては以下のように条件式の後に「:」でwhileブロックを作成します。
while 条件式:
繰返し処理
それでは具体的な使用方法を解説していきます。
カウンタ変数を用いた制御
while文を使用する際にカウンタ変数を用いた制御をします。カウンタ変数とは処理の繰返し回数や数値を記録する変数であり、ある回数に達したら繰返し処理が終了するといったコードが記述できます。
以下に年収400万の人が年功序列で年率2%昇給した場合、5年後に年収いくらになるかを計算したコードになります。
#年収400万の人が年率2%で昇給した場合の5年後の給料
counter = 0 #カウンタ変数
salary = 400
while counter < 5:
salary *= 1.02
print(salary)
counter += 1
#出力結果
#408.0
#416.16
#424.4832
#432.972864
#441.632321280000045年間で40万くらいの昇給になりました。なんだか生々しい数値ですね…
余談ですが、このレートだと年収1000万を達成するのに50年程度かかります。やっぱり昇格とかないと1000万プレイヤーを達成するのは難しそうですねえ。
まじめな話に戻ると、上のコードで一つ注意点があります。whileブロックの最後の行にcounter += 1と記述していますが、これを記述しないとカウンタ変数が0のままになりますので、無限ループに陥ることになります。ちなみに小生も何度も無限ループにハマった経験があります笑。
for文
二つ目に紹介する繰返し文はfor文です。for文はリストや辞書、タプルなどのデータ構造を参照して繰返し処理を実行する文になります。for文の構造としては以下のようになります。
if 変数 in データ構造:
繰り返し処理
それでは以降に具体的な使用方法について解説していきます。
データ構造を用いた繰返し
if文の使用方法として一般的なのはデータ構造から要素を参照して繰り返し処理を実行することが挙げられます。
以下に20代男性5人の身長を格納したリストから身長が平均以下か以上かを判定するコードを記載します。
height = [176.5,167.2,178.5,173.6,186.1]
for h in height:
if h <= 171.7:
print(f'{h}は平均以下の身長です')
else:
print(f'{h}は平均以上の身長です')
#出力結果
#176.5は平均以上の身長です
#167.2は平均以下の身長です
#178.5は平均以上の身長です
#173.6は平均以上の身長です
#186.1は平均以上の身長です
サンプルコードではリストを使用していますが、タプルや辞書でも可能ですので、ぜひご自身で試してみて下さい。
繰返しのスキップ
for文では繰返し処理をする中で任意の条件で繰返しをスキップすることがきます。方法は単純に繰返し処理の途中に「continue」と記述するだけです。
以下に偶数であれば2乗し、奇数であれば処理をスキップするコードを記載します。
#偶数であれば二乗し、奇数であれば繰返し処理をスキップするコード
l = [1,6,3,24,87,46,21]
for num in l:
if num%2 != 0:
print('奇数のためスキップします')
continue
square_num = num**2
print(f'{num}の2乗は{square_num}です')
#出力結果
#奇数のためスキップします
#6の2乗は36です
#奇数のためスキップします
#24の2乗は576です
#奇数のためスキップします
#46の2乗は2116です
#奇数のためスキップします繰返しの強制終了
if文を使用する際に繰返し処理を強制終了することもできます。方法は処理の途中に「break」と記載することです。
以下に整数を足し続けて100を超えたら繰返しを終了するコードを記載します。
#整数を足し続けて100を超えたら強制終了
l = [32,21,45,32,11,47,97]
sum = 0
for num in l:
sum += num
print(f'現在の合計は{sum}です')
if sum > 100:
print('合計が100を超えたので強制終了します')
break
#出力結果
#現在の合計は32です
#現在の合計は53です
#現在の合計は98です
#現在の合計は130です
#合計が100を超えたので強制終了しますPythonの繰り返し処理を問題演習で身につけたい方へ
ここまで、Pythonの繰り返し処理について、
while文for文continuebreak
などを紹介してきました。
繰り返し処理は、同じ処理を何度も実行したいときに非常に便利ですが、
「for文の書き方は分かったけれど、実際に何へ使えばいいのか分からない」
「if文と組み合わせると急に難しく感じる」
「while文で無限ループになってしまう」
といったところでつまずく方も多いのではないでしょうか。
Pythonの基本文法を実際にコードを書きながら練習したい方向けに、Kindle書籍**『Python 文法演習100問』**を出版しました。
本書では、繰り返し処理についても1つの章を設け、今回紹介した内容に加えて、
- リストの値を順番に処理する
range()を使って数値を繰り返し処理する- 条件に合う値だけを取り出す
- 合計や平均を計算する
- 文字列を1文字ずつ処理する
- 辞書のキーと値を順番に処理する
while文を使った繰り返しbreakで処理を終了するcontinueで特定の処理をスキップする- 二次元リストを繰り返し処理する
などを、問題を解きながら学べるようにしています。
繰り返し処理は、単独で使うだけでなく、リストや辞書、条件分岐と組み合わせて使うことが非常に多い文法です。
たとえば、
「リストの中から条件に合う値だけを取り出す」
「複数人の点数から合格者数を数える」
「辞書に入っている金額を順番に足していく」
といった処理も、繰り返し処理を使うことで簡潔に記述できます。
本書では繰り返し処理だけでなく、
- 数値・文字列
- リスト
- 辞書
- タプル・集合
- 条件分岐
- 関数
- クラス
まで、Pythonの基本文法を全100問の演習形式で扱っています。
各問題では、あらかじめ示された実行結果を確認し、
「この結果にするためには、どのような繰り返し処理を書けばよいか」
を自分で考えてコードを作成します。
説明を読むだけではなく、実際にコードを書くことで、Pythonを**「分かる」状態から「自分で使える」状態へ進むこと**を目指した問題集です。
「for文やwhile文の基本は分かったので、実際に使う練習をしたい」
「if文とfor文を組み合わせたコードを書けるようになりたい」
「関数やクラスへ進む前に、繰り返し処理をしっかり身につけたい」
という方にもおすすめです。
価格は980円で、Kindle Unlimited対象となっています。
Kindle Unlimited会員の方であれば、追加料金なしで読むことができます。
終わりに
以上が繰返し処理についての解説になります。使いこなせれば中々便利なのでマスターしてみて下さい。記事中でも書きましたが、私は使い初めの頃しょっちゅうwhileの無限ループにハマってしまい、よく発狂していました。皆さんはそうならないように気をつけて下さい!

