MQL5システムトレーダーの為のPython講座:第12回「繰り返し処理について」

Python
スポンサーリンク
スポンサーリンク

はじめに

前回条件分岐について解説しました。

今回はPythonにおける繰り返し処理について解説したいと思います。

以前も解説したことではありますが、プログラムは「順次進行」「条件分岐」「繰り返し処理」の3つの基本的な動きで構成されています。

繰り返し処理は、決まった回数や条件が満たされている間、同じ処理を何度も実行するプログラムの構造です。反復処理やループ処理とも呼ばれます。

これから、繰り返し処理の代表的な構文である「for文」と「while文」について順番に解説します。

繰り返し処理とは、同じ処理を何度も繰り返し実行するプログラムの構造です。反復処理やループ処理とも呼ばれます。

例えば、「1から5まで数えて画面に表示する処理」を手動で書くと、以下のようになります。

print(1)
print(2)
print(3)
print(4)
print(5)

これでも同じ結果が得られますが、コードが冗長になり、修正や管理が難しくなります。繰り返し処理を使うことで、短く効率的に書くことができます。

for文について

繰り返し処理の代表的な構文がfor文です。for文は、指定した要素や回数に基づいて同じ処理を繰り返します。

for文の基本構文

for カウンター変数 in 繰り返し要素:
    繰り返したい処理

具体例:0から4までの数値を表示

for i in [0, 1, 2, 3, 4]:
    print(i)

i はカウンター変数で、繰り返しごとにリストの値を順番に受け取ります。実行すると以下の出力が得られます。

0
1
2
3
4

range関数を使ったfor文

数値のリストを手動で書く代わりに、range()関数を使うと便利です。
range(開始, 終了)と書くと、指定した範囲の数値を生成します。

for i in range(5):
    print(i)

range(5)は「0から4まで」の数値を自動生成します。

実行結果:

0
1
2
3
4

break文:繰り返し処理を途中で終了

break文を使うと、特定の条件で繰り返しを強制終了できます。

for i in range(5):
    if i == 3:
        break
    print(i)

条件 i == 3breakが実行され、ループが終了します。

実行結果:

0
1
2

continue文:特定の処理をスキップ

continue文は、特定の条件でその回の処理をスキップします。

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

i == 3 の場合、continueで処理をスキップし、次の繰り返しに進みます。

実行結果:

0
1
2
4

for文のネスト

for文の中にさらにfor文を入れることを「for文ネスト」と言います。

for i in range(3):      # 外側のループ
    for j in range(2):  # 内側のループ
        print(i, j)

外側のループ i が1回進むごとに、内側のループ j がすべての値を処理します。

実行結果:

0 0
0 1
1 0
1 1
2 0
2 1

while文について

繰り返し処理のもう一つの方法としてwhile文があります。while文は、条件が満たされている間、同じ処理を繰り返します。

while文の基本構文

  • 条件:処理を繰り返すための条件。
  • 繰り返したい処理:条件が満たされている間、実行する処理。

具体例:0から4までの数値を表示

# 初期値として変数iに0を代入
i = 0

# 条件が「iが5未満の間」繰り返し処理を行う
while i < 5:  
    print(i)  # 変数iの値を表示する
    i += 1    # 変数iに1を足して更新する(i = i + 1 と同じ意味)

解説

  1. 変数iに0を代入して初期値を設定します。
  2. while文の条件として「iが5未満」であることを指定します。
  3. 条件が満たされている間、変数iの値を表示し、iを1ずつ増やします。
  4. iが5になると条件が満たされなくなるため、ループが終了します。

実行結果:

0  
1  
2  
3  
4  

while文とfor文の違い

  • for文繰り返し回数が決まっている場合に使用。
  • while文:条件が満たされている間、繰り返すため回数がわからない場合に使用。

具体例:条件を満たす間、変数を2倍にする処理

# 初期値として変数iに1を代入
i = 1

# 条件が「iが100未満の間」繰り返し処理を行う
while i < 100:  
    print(i)  # 変数iの値を表示する
    i *= 2    # 変数iを2倍にして更新する(i = i * 2 と同じ意味)

# 繰り返し処理が終わった後の処理
print("フィニッシュ")  # 最後にメッセージを表示する

解説

  1. 変数iに1を代入し、初期値を設定します。
  2. while文の条件として「iが100未満であること」を指定します。
  3. 条件が満たされている間、変数iを表示し、iを2倍に更新します。
  4. 変数iが100以上になった時点で条件が満たされなくなり、ループが終了します。
  5. 最後に「フィニッシュ」と表示します。

実行結果:

1  
2  
4  
8  
16  
32  
64  
フィニッシュ  

while文の注意点

while文を使う際は、必ず条件が満たされなくなる仕組みを作る必要があります。条件が永遠に満たされる場合、プログラムは止まらず無限ループになります。

無限ループを避けるために、変数の更新や条件の設定をしっかり確認しましょう。

無限ループについて

無限ループとは、条件が常に満たされる状態でループが繰り返され続けることを指します。while文で条件を常にTrueに設定すると、終了条件を作らない限り処理が無限に続きます。無限ループは、少なくとも1回処理を実行したい場合や、終了条件が後から決まる場合に便利ですが、適切に制御しないとプログラムが止まらなくなるため注意が必要です。


基本構文

無限ループを作るには、while True:と記述します。このTrueは常に条件を満たしているため、終了条件を設定しなければ永遠にループが続きます。終了させるには、break文を使用します。


具体例:無限ループで条件を満たしたら終了

以下のコードでは、初期値200の変数を2倍にする処理を繰り返し、値が1000以上になった時点でループを終了します。

# 初期値として変数iに200を代入
i = 200

# 無限ループを開始
while True:  
    print(i)  # 変数iの値を表示する
    i *= 2    # 変数iを2倍にして更新する(i = i * 2 と同じ意味)

    # 終了条件:iが1000以上になったらループを終了
    if i >= 1000:  
        break  # ループを終了する

# 無限ループを抜けた後の処理
print("フィニッシュ")  # 最後にメッセージを表示する

実行結果

200
400
800
1600
フィニッシュ

解説

  1. 変数iに200を代入し、初期値を設定します。
  2. while True:で無限ループを開始します。
  3. ループ内では、変数iの値を表示し、iを2倍に更新します。
  4. 変数iが1000以上になった場合、if文の条件を満たし、breakでループを終了します。
  5. ループ終了後、「フィニッシュ」というメッセージを表示します。

無限ループの注意点

無限ループを使用する際は、以下の点に注意してください。

  • 終了条件を必ず設定すること:終了条件を忘れると、プログラムが終了せずコンピュータに負荷がかかります。
  • 適切な用途で使用すること:ユーザー入力を待つ処理や、常に監視が必要なプログラムなど、明確な目的がある場合に使用します。

無限ループは便利なテクニックですが、正しい設計のもとで使用することが重要です。

まとめ

繰り返し処理は、プログラムの中で同じ処理を効率的に繰り返すために欠かせない構造です。

これらの使い方を理解し、適切に使い分けることで、コードをシンプルかつ効率的に書くことができます。

今回は以上とさせて頂きます。

最後までお読みいただきありがとうございました。

MQL5システムトレーダーの為のPython講座:第11回「条件分岐について」

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