コース一覧
    Pythonループ・関数
    breakとcontinue

    Pythonループ・関数

    ループと関数の基本を学び、繰り返し処理を分割して読みやすく書けるようにします。

    1
    ループ
    01. forで合計15分
    02. whileで繰り返す15分
    03. rangeとstep15分
    04. breakとcontinue15分
    05. enumerateで番号付け15分
    06. zipで組み合わせ15分
    07. 入れ子ループ15分
    08. つくる:何件でも記録15分
    09. 第5章クイズ10分
    2
    関数
    01. 関数を定義する15分
    02. 引数と戻り値15分
    03. デフォルト引数15分
    04. キーワード引数15分
    05. 複数の戻り値15分
    06. divmod15分
    07. 変数のスコープ15分
    08. lambda関数15分
    09. つくる:関数に分割15分
    10. 第6章クイズ10分

    breakとcontinue

    break と continue の分かれ道

    1 件だけ飛ばしたいのに、全部止まってしまう

    ループは最後まで全部回すのが基本ですが、途中で流れを変えたくなることがあります。用意されている命令は 2 つで、名前は似ていますが行き先がまったく違います。

    continue は その周だけ飛ばして次に進む 命令です。

    Python

    for name in ["りんご", "", "パン"]:
        if name == "":
            continue
        print(name)

    continue に到達すると、その下の print(name) は実行されず、すぐ次の周に進みます。表示されるのは りんご と パン だけです。

    break は ループそのものを抜ける 命令です。

    Python

    for name in ["りんご", "パン", "おわり", "牛乳"]:
        if name == "おわり":
            break
        print(name)

    おわり に当たった時点でループが終わるので、うしろの 牛乳 は読まれません。表示は りんご と パン の 2 行です。

    解説

    break は建物から出る、continue は次の部屋へ進む。この差をはっきり持っておくと迷いません。

    書いた順番が、そのまま優先順位になる

    飛ばす判定と打ち切る判定を同じループに入れると、上に書いたほうが先に効きます。打ち切りを先に置けば、合図に当たった時点でその周の残りは一切動きません。

    判定が重ならない値どうしなら、どちらを先に書いても結果は同じです。ただし条件が重なる場合は、順番がそのまま優先順位になります。elif で「上から順に評価される」と学んだのと同じ話です。

    continue より下に書いた行は、その周では絶対に動きません。「書いたのに実行されない」という相談の多くは、これが原因です。

    while と組み合わせるときは特に慎重に扱います。continue で戻ったときに位置を進める行を飛ばしてしまうと、そのまま無限ループになります。

    break で抜けたあとは、ループの下に続く

    break はループを終わらせるだけで、関数を終わらせるわけではありません。抜けたあとは、ループの下に書いた行から続きます。

    だから break で抜ける形を書いたときは、ループの下に return があるかを必ず確かめます。無いと関数は None を返します。

    なお continue を使わず if で囲んでも、飛ばす条件が 1 つなら結果は同じです。条件が増えてくると continue を並べたほうがインデントを浅く保てて、読みやすくなります。

    やってみよう

    関数 total_skip_zero(prices) を実装してください。引数 prices は金額 (int) が並んだリストです。

    0 の要素は continue で飛ばして合計に入れません。-1 は打ち切りの合図なので、break でループを抜け、それ以降は読みません。それ以外の金額を足した合計を return します。

    prices が空のとき、-1 が先頭にあるとき、0 しか入っていないときは、いずれも 0 を返します。3 つとも、合計を 0 から始めていれば自然にそうなります。

    要件

    1. 関数名は total_skip_zero で、引数はリスト prices の1つだけにする
    2. 0 の要素は continue で飛ばして合計に入れない
    3. -1 に当たったら break でループを抜け、それ以降は読まない
    4. 空のリストや -1 が先頭の場合は 0 を返す

    ヒント

    total = 0 をループの前に置き、条件に当たらなかったものだけ足します

    -1 の判定を先に書くと、打ち切りが確実に効きます

    continue はその周だけ飛ばし、break はループそのものを終わらせます

    return はループの外に書きます。break で抜けたあとの行が実行されます

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

    関連レッスン

    • enumerateで番号付け

      enumerate で品名リストに1から始まる通し番号を振る numbered_list を作る

    • zipで組み合わせ

      zip で品名リストと金額リストを組にし、レシート行に整える pair_lines を作る

    • 入れ子ループ

      ループの中にループを書いて九九の表を組み立てる multiplication_table を作る

    • つくる:何件でも記録

      第5章の総仕上げ。記録の集まりから番号付き一覧と合計を返す show_all を作る

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • 評価出力品質を数値化して継続改善する活動
    • 関数処理に名前を付けて再利用できる単位
    • インデントPythonはインデント(通常スペース4つ)でコードブロックを定義する。
    • 引数位置引数=順番で渡す。
    • リスト順序付きで複数の値を扱うデータ構造
    main.py
    エディタを読み込んでいます

    メモ

    breakとcontinue

    ⌘S で保存