こんにちは!ぼりたそです!今回はPythonの繰り返し処理について記事をまとめまてみました。
この記事は以下のポイントでまとめています。
同じ処理をするために同じコードを何行も書くのが面倒くさいなんて思ったことあるんじゃないでしょうか?そんなときに登場するのが繰返し文なのです。マスターすればコードの効率化間違いなしですのでぜひみていって下さい!
繰返し文とは?
繰返し文とは文字通り、ある一定の処理を繰返す構文のことです。冒頭でも少し触れたように同じ処理をするために同じコードを何行も記述するのは面倒ですよね。そんな時にはこの繰返し文が役に立つのです。繰返し文は主に以下二つの手法を用いて実行します。
- 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.63232128000004
5年間で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を超えたので強制終了します
終わりに
以上が繰返し処理についての解説になります。使いこなせれば中々便利なのでマスターしてみて下さい。記事中でも書きましたが、私は使い初めの頃しょっちゅうwhileの無限ループにハマってしまい、よく発狂していました。皆さんはそうならないように気をつけて下さい!