モジュールのレッスン (3/4)
ブレーク、続行、その他のループ
ループ内 (for と while の両方) で通常のフローを変更できます。
3 つの構造:
break— ループを直ちに終了します。continue— 本体の残りの部分をスキップし、次の反復にジャンプします。else(ループ上) —breakなしでループが終了したときに実行されます。
break
for n in [3, 7, 11, 4, 9]:
if n % 2 == 0:
primo_pari = n
break
primo_pari # 4break はループをできるだけ早く停止します。 break 以降のすべて
現在の反復の本体は実行されません。
continue
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 なし) 終了しました。検索に最適です。
target = 7
for n in [2, 4, 6, 8]:
if n == target:
trovato = True
break
else:
trovato = False
trovato # Falseこれを次のように読み取ります: リスト内の各 n に対して *"; break 分岐を選択する場合はスキップします
それ以外の場合。それ以外の場合はelse"*を実行します。
ネストされたループ: ブレークは最も内側のループのみを終了します
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 ステートメントに遭遇することなく) 実行されます。これは、検索アルゴリズム (例: 「要素を検索: 見つかった場合は中断、そうでない場合は見つからなかったことを報告する」) に非常に役立ちます。
自分で試してみてください
リスト `numbers = [10, 15, 20, 25, 30, 35]` を指定すると、7 で割り切れる最初の数値を見つけて、それを `result` に代入します。存在しない場合は、-1 を割り当てます。
ヒントを表示
35 は、リスト内で 7 で割り切れる最初 (そして唯一) の値です。
3 回の試行後に解決策が利用可能になります
復習演習
range(1, 21) に対する for ループを使用して、1 から 20 (両端を含む) までの奇数を含むリスト `odd_numbers` を作成し、引き続き偶数をスキップします。
ヒントを表示
n が偶数の場合は続行します。それ以外の場合は追加します。
3 回の試行後に解決策が利用可能になります
追加の課題
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 回の試行後に解決策が利用可能になります