Pythonで遊ぼう! 基礎編 ⑧ 反復処理 for while break continue

基礎⑧アイキャッチ 基礎編
ループ!

この記事には、PR部分にUdemyのアフィリエイトリンクを含みますが、記事の内容は筆者が独自に作成したものです。記事の作成についてUdemy様から報酬等を受け取って作成したものではありません。

スポンサーリンク

イントロダクション

今回は、Pythonの「反復処理」について学びます。

前回学習したように、Pythonに限らず、コンピュータが行う全ての処理は、順次処理・分岐処理・反復処理の3つの要素に分類できます。

今回学習するのは「反復処理」です。関連事項として、「累算代入演算子」の解説も行います。

東北大学のPythonの解説によると、反復処理は、自動化の要であり、反復をマスターしなければ、プログラミングを学ぶ価値がないとまで断言されています。それだけ重要な要素であり、便利な機能であるということです。

情報基礎 「Pythonプログラミング」(ステップ4・反復処理)

反復処理は、同じコードを何度も実行するための方法で、Pythonでは主に for ループと while ループの2つの方法があります。

PR

プログラミング言語の人気オンラインコース
ITとソフトウェアの人気オンラインコース

forループ

for ループは、指定回数分、同じ処理を繰り返すことを可能にします。

指定回数の繰り返し

例えば、print(Hello!)を10回繰り返したいとき、10回処理を記述するのは面倒です。指定回数分の処理を繰り返すには、以下のように記述します。

forの書き方(指定回数の反復処理)
  • for に続いて繰り返す回数を代入する変数を書きます
  • 改行せずに、 in range(繰返回数) を書きます
  • 「 : 」を書いて改行します
  • 改行後、インデントを置いて繰り返す処理を書きます
#%%
for n in range(10):
    print("Hello!")

range(10)とは何だったでしょうか。0から9までの10個の数字を生成する関数のことでした。

上記コードでは、n=0 回目の処理:Hello!から、 n=9 回目の処理:Hello! が行われたことになります。nをprint()していないので出力画面には表示されず、range(繰返回数)としても問題ありません。

以下の場合はどうでしょうか。

#%%
for n in range(10):
    print(n,"回目のHello!です")

# こう修正する
for n in range(1,11,1):
    print(n,"回目のHello!です")

# 実用的なカウントダウン
for n in range(5,0,-1):
    print(n,"秒前")

繰り返す回数を代入する変数を再利用する際には、range()の書き方に注意してください。

シーケンス型の繰り返し

リストや文字列などのイテラブル(反復可能な)オブジェクトの要素を一つずつ取り出して反復処理を行うこともできます。

forの書き方(シーケンス型の反復処理)
  • リストやタプルなど、イテラブルオブジェクトの変数(変数1)を設定します
  • for に続いて上記変数から取り出した値を代入する変数(変数2)の変数名のみを書きます
  • 改行せずに、 in 変数1 と書きます
  • 「 : 」を書いて改行します
  • 改行後、インデントを置いて繰り返す処理を書きます
#%%
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

# もしforをつかわなかったら…
fruits = ["apple", "banana", "cherry"]
print(fruits[0])
print(fruits[1])
print(fruits[2])
#今回は3回で済んだが、例えば100回の反復作業となると…

fruitsリストの各要素(ここでは”apple”、“banana”、“cherry”)を順に取り出し、それをfruitという変数に格納します。そして、print(fruit)の行が各要素に対して実行され、結果として各果物の名前が順に表示されます。

whileループ

whileループは、指定した条件が真である限り、ブロック内のコードを繰り返し実行します。

whileの書き方(基本)
  • 変動対象になる変数を置きます。
  • whileに続いて条件式を書き、「 : 」を書きます。
  • インデントを置いて、変数の変動(+=など)を書きます
  • 反復対象の処理を書きます。
#%%
i = 0
while i < 5:
    i += 1
    print(i)

# 変数の変動をどこに置くかで結果が変わる
i = 0
while i < 5:
    print(i)
    i += 1

このコードは、iが5未満である限り、i += 1とprint(i)の行を繰り返し実行します。i += 1はiの値を1増やす操作で、これによりiの値が次第に増え、最終的には5未満ではなくなります。その結果、ループは終了します。

コメントで書いたように、変数の変動をどこで起こすかにより、結果が変わるので、記載箇所を吟味する必要があります。

累算代入演算子

+= という演算子は、Pythonで累算代入演算子と呼ばれます。

変数に、特定の値を足し続けたり、引き続けたりすることを可能にします。

内部的は、変数と特定の値を演算して、再び変数に代入するという処理です。

演算子内部処理
+=i += 2i = i + 2
-=i -= 2i = i -2
*=i *= 2i = i * 2
/=/=i = i / 2
List +=[x,y]List = List+ [x,y]

すなわち、リストに使用すれば、リストに要素を追加して、リストを再定義できるということです。コードを短く書く便利なテクニックとして使えます。

何を言っているのかわからない方は、コード例を入力してみてください。

#%%
List = [1,2,3]
List += [4,5]
print(List)

ループの中断・スキップ (break continue)

ここからは、forループ whileループ 両方に共通する話になります。

break や continue を使用して、ループ処理中ある条件が満たされたら処理を止めるコードを書くことや、ある条件の時はその処理だけをスキップしてループを実行するコードを書くこともできます。

break と continueの書き方(基本)
  • for または while でループ処理を書き始めます
  • ループ処理を中断する可能性がある条件や、処理をスキップする可能性のある条件を if 条件式で書きます
  • 条件式の末尾に「 : 」を書きます
  • インデントを2回置いてbreak または continue を書きます
  • 改行し、インデントを1回置いて(ifと同じインデントで)反復対象の処理を書きます
# break と for
for i in range(5):
    if i == 3:
        break
    print(i)

# break と while
i = 0
while i < 5:
    if i == 3:
        break
    print(i)
    i += 1

#continue と for
for i in range(5):
    if i == 3:
        continue
    print(i)

# continue と while
i = 0
while i < 5:
    if i == 3:
        i += 1  # これを書かないと、iの変動が起きずに無限ループに陥ります
        continue
    print(i)
    i += 1

break と continue を使う際のポイントは、両者ともbreak と whileの後に書く処理が飛ばされるという点です。特に、whileの場合、breakやcontinueの前に変数の変動を付け足してあげないと無限ループが発生します。ご注意ください。

breakは飛ばされる先が、ループ処理終了後で、continueループ処理の続きという解釈がわかりやすいかと思います。

まとめ

お疲れさまでした!

for ループと while ループを使いこなすことで、同じコードを何度も書く必要がなくなり、効率的なプログラミングが可能になります。

しかし、無限ループ(終了条件を満たさないループ)に注意する必要があります。特にwhileループを使用する際は、終了条件が必ずいつかは満たされるように設計することが重要です。

次回の記事はこちら

PR

プログラミング言語の人気オンラインコース
ITとソフトウェアの人気オンラインコース

コメント

タイトルとURLをコピーしました