このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】次の繰り返しに進めるcontinue文

次の繰り返しに進めるcontinue文

 Pythonのcontinue文は、ループ処理中に特定の条件が成立した際、その時点で残りの処理をスキップして次の反復に進むための制御構造です。これにより、条件に合致する場合だけはループ内の後続の文を実行せず、効率的に処理の流れを制御できます。
 ここでは、continue文の基本的な構文や動作、そして実際にループ内での使い方について、具体例と表を用いて詳しく解説します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.continue文の基本概念

1.1. 基本構文と役割

 continue文は、ループ(for文やwhile文)の内部で使い、条件に応じてその反復の残りの文をスキップし、次の反復へ直ちに移る命令です。基本構文は以下の通りです。

while 条件式:
    文1
    if 条件:
        continue  # この行以降の文はスキップされ、次の反復に移る
    文2

解説

  • if 条件: により、特定の条件がTrueとなった場合に、continue が実行されます。
  • continue 文が実行されると、その反復の残りの文(ここでは文2)は実行されず、ループの次のサイクルに移ります。
  • この機能は、特定の場合だけスキップ処理を行いたいときに非常に有用です。

1.2. continue文の処理の流れ

continue文は、以下のような流れで動作します。

ステップ説明
1. 条件式の評価ループ内のif文で指定した条件が評価される。
2. continue文の実行条件がTrueなら、continue文が実行され、その反復の残りの文をスキップ
3. 次の反復へ移行ループが次の反復サイクルに移り、再び条件式が評価される。

解説

  • この流れにより、特定の条件下で不要な処理を回避し、ループ処理の効率を高めることができます。

2.実践例:ショッピングカタログへの品目登録プログラム

2.1. プログラム概要

 ここでは、ユーザからキーボードで品目を入力してもらい、すでにリストに登録されている品目が入力された場合は、重複登録を防ぐためにcontinue文を使って次の反復に進むプログラムを作成します。今回は変数名を shopping_list とし、ユーザが3つの異なる品目を登録するまで繰り返します。

2.2. サンプルプログラム

# 空のショッピングリストを作成
shopping_list = []

# リストの要素数が3未満である限り、品目の入力と登録を繰り返す
while len(shopping_list) < 3:
    # ユーザから品目を入力させる。入力プロンプトには "Item: " を表示する
    item = input("Item: ")
    
    # すでにリストに品目が登録されている場合は、警告メッセージを表示して次の反復へ
    if item in shopping_list:
        print(f"{item} is already in the shopping list.")
        continue  # この時点で現在の反復を終了し、次のループに移行する
    
    # 品目が重複していなければ、リストに追加する
    shopping_list.append(item)

# 登録されたショッピングリストを表示する
print("Shopping List:", shopping_list)

実行結果

Item:  carrot
Item:  potato
Item:  potato
potato is already in the shopping list.
Item:  tomato
Shopping List: ['carrot', 'potato', 'tomato']

解説

  • 初期化: shopping_list = [] により、品目を格納するための空のリストを作成します。
  • while文の条件: while len(shopping_list) < 3: は、リストに登録された品目数が3未満の間、ループを継続します。
  • ユーザ入力: input("Item: ") により、ユーザに品目の入力を促します。入力された文字列は変数 item に代入されます。
  • 重複チェック:if item in shopping_list: で、入力された品目がすでにリストに存在するかを確認します。
    ・存在する場合、print(f"{item} is already in the shopping list.") で警告メッセージを出力し、continue により、その反復の残りの文をスキップして次のループに移ります。
  • 品目の追加: 重複していなければ、shopping_list.append(item) によって、リストに新しい品目が追加されます。
  • ループ終了後: リストに3つの品目が登録されたら、ループが終了し、最終的なショッピングリストが出力されます。

3.注意点とまとめ

3.1. ループ中のリストの変更

 for文やwhile文の中で対象のリストを直接変更すると、予期せぬ挙動が起こる可能性があります。continue文を使って条件分岐を行う場合、変更前に条件をチェックして、必要に応じてループをスキップすることが重要です。

3.2. コードの可読性

 continue文は、条件が成立したときに残りの処理をスキップして次の反復に移るため、コードをシンプルに保ちつつ、明確な条件分岐を実装できます。しかし、過度に使用すると、ループの流れが追いにくくなるため、適切なコメントや変数名の工夫が必要です。

【表:continue文の基本的な流れ】

ステップ説明
1. 条件の評価if文で指定した条件がTrueかどうかを評価
2. continueの実行条件がTrueの場合、continue文が実行され、残りの文をスキップする
3. 次の反復に移行ループが次のサイクルに移り、再び条件が評価される

まとめ

 continue文を用いると、ループ内で特定の条件が満たされた場合に、その反復の残りの処理をスキップし、次の反復に直ちに移ることができ、コードの効率性と明確性を向上させることができます。

  • 基本構文と動作: while文やfor文内でif文と組み合わせて使用し、条件がTrueの場合にcontinue文でその反復を終了します。
  • 実践例: ショッピングリストへの品目登録プログラムでは、既に登録された品目が入力された場合に警告を表示し、continue文で次の反復に進むことで、重複登録を防いでいます。
  • 注意点: ループ中のデータ構造の変更による予期せぬ動作を避けるため、条件判定とcontinue文の使い方に十分注意する必要があります。

 これらの知識を活用することで、より柔軟で効率的なループ処理が実現でき、プログラムの制御フローを正確に管理することができるようになります。