メインコンテンツにスキップ
モジュール 2 · レッスン 3 / 4コース内の 7/36~10 min
モジュールのレッスン (3/4)

ブレーク、続行、その他のループ

ループ内 (for と while の両方) で通常のフローを変更できます。 3 つの構造:

  • break — ループを直ちに終了します。
  • continue — 本体の残りの部分をスキップし、次の反復にジャンプします。
  • else (ループ上) — break なしでループが終了したときに実行されます。

break

Python
for n in [3, 7, 11, 4, 9]:
    if n % 2 == 0:
        primo_pari = n
        break
primo_pari  # 4

break はループをできるだけ早く停止します。 break 以降のすべて 現在の反復の本体は実行されません。

continue

Python
risultati = []
for n in range(1, 11):
    if n % 2 == 0:
        continue   # skip evens
    risultati.append(n * n)
risultati  # [1, 9, 25, 49, 81]

continue は「次の反復に進む」と考えてください。アイテムをフィルタリングするために使用されます インデント レベルを 1 つ追加する必要はありません。

ループ上の else (Python のイディオム)

Python の特徴: ループには else を含めることもでき、これは次の場合にのみ実行されます。 ループは 自然に (break なし) 終了しました。検索に最適です。

Python
target = 7
for n in [2, 4, 6, 8]:
    if n == target:
        trovato = True
        break
else:
    trovato = False
trovato  # False

これを次のように読み取ります: リスト内の各 n に対して *"; break 分岐を選択する場合はスキップします それ以外の場合。それ以外の場合はelse"*を実行します。

ネストされたループ: ブレークは最も内側のループのみを終了します

Python
for x in range(3):
    for y in range(3):
        if x == y == 1:
            break
        print(x, y)

break は、for y のみを終了し、for x は終了しません。両方を終了するには、 フラグまたは関数 + return。

珍しいループ...else 構造

Python では、for ループと while ループの両方に、オプションの else 句を指定できます。 else ブロックは、ループが正常に完了した場合にのみ (つまり、break ステートメントに遭遇することなく) 実行されます。これは、検索アルゴリズム (例: 「要素を検索: 見つかった場合は中断、そうでない場合は見つからなかったことを報告する」) に非常に役立ちます。

自分で試してみてください

運動#python.m2.l3.e1
試行回数: 0読み込み中…

リスト `numbers = [10, 15, 20, 25, 30, 35]` を指定すると、7 で割り切れる最初の数値を見つけて、それを `result` に代入します。存在しない場合は、-1 を割り当てます。

エディターを読み込み中…
ヒントを表示

35 は、リスト内で 7 で割り切れる最初 (そして唯一) の値です。

3 回の試行後に解決策が利用可能になります

復習演習

運動#python.m2.l3.e2
試行回数: 0読み込み中…

range(1, 21) に対する for ループを使用して、1 から 20 (両端を含む) までの奇数を含むリスト `odd_numbers` を作成し、引き続き偶数をスキップします。

エディターを読み込み中…
ヒントを表示

n が偶数の場合は続行します。それ以外の場合は追加します。

3 回の試行後に解決策が利用可能になります

追加の課題

運動#python.m2.l3.e3
試行回数: 0読み込み中…

Given the list `numbers = [7, 11, 14, 21, 25]`, write a `for` loop to find the first number that is divisible by 7 and also strictly greater than 10. When you find it, store it in `found` and exit the loop using `break`. Finally, evaluate `found`.

エディターを読み込み中…
ヒントを表示

Inside the loop, check if num % 7 == 0 and num > 10:, assign it to found and trigger break.

3 回の試行後に解決策が利用可能になります