【Python】レッスン2-07:繰り返し処理を制御しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:繰り返しの制御

この記事の練習問題で使用する知識:
入力と出力の基本コメントの書き方変数の宣言と代入基本データ型と算術演算子文字列の操作、フォーマット文字列比較演算子と論理演算子条件分岐(if-else文)条件分岐(elif文)条件分岐(match文)繰り返し処理(for文)繰り返し処理(while文)繰り返しの制御、エラーメッセージ例外処理の基礎

<<前の問題 問題集Top 次の問題>>

Pythonの「繰り返しの制御」とは

この章ではPythonにおける「繰り返しの制御」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。



繰り返し処理は特定の動作を何度も実行する際に非常に便利ですが、すべてのループが最初から最後まで実行されるとは限りません。

Pythonでは繰り返し処理の中で特定の条件に基づいて処理の流れを変更したい場合にbreakcontinueを使ってループを制御することができます。

繰り返しの制御:breakとcontinue

Pythonでは繰り返し処理(for文やwhile文)を途中で中断したり、特定の条件でスキップしたりするために、breakcontinueというキーワードを使用します。

  • break: ループを途中で終了させ、ループの外に抜け出します。
  • continue: その回のループを終了し、次の繰り返しに進みます。ループは終了せず、続けて実行されます。

これらのキーワードの使い方を具体的なコード例を交えて紹介します。

breakの使い方

breakはループを途中で終了させるためのキーワードです。

例えば数字を1から順に数え、5になったらループを終了するコードを見てみましょう。

# 1から10までの数字を繰り返し処理
for i in range(1, 11):
    print(i)
    if i == 5:
        print("5に達したのでループを終了します。")
        break  # 5に達したらループを終了

このコードを実行すると以下のように出力されます。

1
2
3
4
5
5に達したのでループを終了します。

この例ではrange(1,11)によってiには1から10までの数値が代入されていく予定ですが、if i == 5:の条件が満たされた時にbreakが実行され、ループは途中で終了します。

よって6以降の数字は表示されません。breakは特定の条件でループを完全に抜けたいときに非常に役立ちます。

continueの使い方

一方continueはその回の処理をスキップして、次の繰り返しに進むためのキーワードです。

例えば1から10までの数字の中で、3の倍数をスキップして表示するコードを見てみましょう。

# 1から10までの数字を繰り返し処理
for i in range(1, 11):
    if i % 3 == 0:
        continue  # 3の倍数の場合はスキップ
    print(i)

このコードを実行すると以下のように出力されます。

1
2
4
5
7
8
10

このコードではi % 3 == 0の条件が満たされた場合、continueによってその回のループはスキップされ、次の数字に進みます。

そのため3, 6, 9といった3の倍数は表示されません。

まとめ

繰り返し処理において、breakcontinueは重要な役割を果たします。

breakはループを途中で終了し、continueは特定の条件で次の繰り返しに進むためのものです。これらのキーワードを使いこなすことで、効率的にループを制御できるようになります。

実際にコードを書いて試し、繰り返し処理の制御方法を学んでみてください。

Python練習問題2-7:breakとcontinueを使ってループをコントロールしよう

1から10までの数字を順番に処理するプログラムを作成してください。

ただし3の倍数は全てスキップし、かつ数字が8に達したらループを終了するように制御しましょう。

breakとcontinueを使って、繰り返し処理の流れを制御する方法を学びましょう。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • for文を使用して、1から10までの数値を処理すること。
  • 数字が8になったらbreakを使ってループを終了すること。
  • 3の倍数の場合はcontinueを使ってその回のループをスキップすること。
  • ループ終了時に「ループが終了しました」と表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

現在の数字: 1
現在の数字: 2
3は3の倍数なのでスキップします。
現在の数字: 4
現在の数字:5
6は3の倍数なのでスキップします。
現在の数字:7
8に達したのでループを終了します。
ループが終了しました。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1.for文を使用して繰り返し処理を実行
 1-1. 範囲 1 から 10 までの数値を生成
 1-2. 各数値に対して処理を実行

2.if文を使用して条件を判定
 2-1. 数字が 8 であればループを終了(breakを使用)
 2-2. 3の倍数であればループをスキップ(continueを使用)

3.通常の処理
 3-1. ループの中で現在の数字を表示

4.ループ終了後にメッセージを表示

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# 繰り返し処理の中でbreakとcontinueを使ってループを制御するコード

for i in range(1, 11):  # 1から10までの数字を順に処理

    """【穴埋め問題1】
    ここにif文を使って、数字が8の場合にループを終了するコードを書いてください。
    """

    """【穴埋め問題2】
    ここにif文を使って、3の倍数の時にループをスキップするコードを書いてください。
    """

    """【穴埋め問題3】
    現在の数字を表示するコードを書いてください。
    """

print("ループが終了しました。")  # ループ終了後に終了メッセージを表示

 

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



解答例と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

# このコードは繰り返し処理を制御するためにbreakとcontinueを使用します

# 1から10までの数字を繰り返し処理
for i in range(1, 11):
    # 数字が8の場合はループを途中で終了
    if i == 8:
        print("8に達したのでループを終了します。")
        break  # ここでループを終了
    # 3の倍数の場合はその回の処理をスキップ
    if i % 3 == 0:
        print(f"{i}は3の倍数なのでスキップします。")
        continue  # ここで次の繰り返しに進む
    print(f"現在の数字: {i}")

# プログラム終了時のメッセージ
print("ループが終了しました。")

正解コードの解説

正解コードをブロックごとに分けて解説します。

for文による繰り返し

for i in range(1, 11):

ここではrange(1, 11)を使って1から10までの数値が順番にiに代入され、ループ内の処理がその回数分実行されます。

breakを使ったループの終了

if i == 8:
    print("8に達したのでループを終了します。")
    break

if文によってiが8と等しいかどうかを確認します。i == 8Trueの場合、print文でメッセージを表示した後、breakが実行されます。

continueを使った処理のスキップ

if i % 3 == 0:
    print(f"{i}は3の倍数なのでスキップします。")
    continue

この部分ではif文を使ってiが3の倍数かどうかを確認しています。i % 3 == 0は、iを3で割った余りが0であることを意味し、3の倍数であることを示します。

数字の表示

print(f"現在の数字: {i}")

この行では3の倍数や8でない場合にiの値を表示します。スキップされなかった数値のみが出力されます。

ループ終了後の処理

print("ループが終了しました。")

ループが終了した後に、メッセージが表示されます。

これはiが8になった時点でbreakによってループが終了した場合に表示されます。

まとめ

このコードではbreakcontinueを使って繰り返し処理の流れを制御する方法を学びました。

breakはループを途中で終了し、continueは特定の条件でその回の処理をスキップします。

この2つの制御文を使いこなすことで、繰り返し処理をより柔軟にコントロールできるようになりましょう。

<<前の問題 問題集Top 次の問題>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Python記事トップへ戻る
    トップページへ戻る