ループの制御とネストを学ぼう
学習の目標
本章では、以下の内容を学習します。
- break文を使ってループから抜け出す方法を理解する
- continue文を使って次の繰り返しにスキップする方法を習得する
- ネストしたループ(ループの中にループ)の基本構造を学ぶ
- 二重ループを使った基本的なパターン表示を理解する
はじめに
これまでにfor文とwhile文を使った繰り返し処理を学びました。しかし、実際のプログラムでは「特定の条件でループを途中で終了したい」や「特定の場合だけ処理をスキップしたい」といった、より柔軟な制御が必要になることがあります。
また、「繰り返しの中でさらに繰り返し処理を行いたい」という場面もあります。例えば、九九の表を全て表示したい場合、1の段から9の段まで繰り返し、それぞれの段で1×1から1×9まで繰り返す必要があります。
今回は、このような複雑な繰り返し処理を実現するための機能を学んでいきましょう。
break文でループから抜ける
break文は、ループを途中で終了させるための命令です。for文でもwhile文でも使用できます。
VS Codeでbreak_example.pyというファイルを作成し、以下のコードを入力してください。
# 1から10まで表示するが、5で止めるprint("1から10まで数えますが、5で止めます:")
for i in range(1, 11):    if i == 5:        print("5に到達したので終了します")        break    print(i)
print("ループ終了")このプログラムでは、iが5になった時点でbreak文が実行され、ループから抜け出します。
実行すると、以下のような結果が表示されます。
1から10まで数えますが、5で止めます:12345に到達したので終了しますループ終了iが5になった時点でループが終了し、6以降は表示されていないことがわかります。
while文でのbreak文の使い方も見てみましょう。同じファイルに以下を追加してください。
# while文でのbreak使用例print("\nwhile文でのbreak:")count = 1
while True:  # 無限ループ    if count > 3:        print("3を超えたので終了")        break    print(f"カウント: {count}")    count = count + 1
print("while文終了")実行結果は以下のようになります。
while文でのbreak:カウント: 1カウント: 2カウント: 33を超えたので終了while文終了while True:で無限ループを作っていますが、break文によって適切なタイミングで終了しています。
continue文で次の繰り返しへ
continue文は、現在の繰り返しの残りの処理をスキップして、次の繰り返しに進む命令です。ループ自体は終了せず、条件に合う場合のみ処理を飛ばします。
VS Codeでcontinue_example.pyというファイルを作成し、以下のコードを入力してください。
# 1から10まで表示するが、偶数はスキップprint("1から10まで表示(偶数はスキップ):")
for i in range(1, 11):    if i % 2 == 0:  # 偶数の場合        continue    # 以下の処理をスキップして次の繰り返しへ    print(i)
print("ループ終了")この例では、i % 2 == 0(iを2で割った余りが0)で偶数を判定し、偶数の場合はcontinue文でprint(i)をスキップしています。
実行すると、以下のような結果が表示されます。
1から10まで表示(偶数はスキップ):13579ループ終了偶数(2, 4, 6, 8, 10)が表示されず、奇数だけが表示されていることがわかります。
while文でのcontinue文も見てみましょう。同じファイルに以下を追加してください。
# while文でのcontinue使用例print("\nwhile文でのcontinue:")count = 0
while count < 5:    count = count + 1        if count == 3:        print("3はスキップします")        continue        print(f"処理: {count}")
print("while文終了")実行結果は以下のようになります。
while文でのcontinue:処理: 1処理: 23はスキップします処理: 4処理: 5while文終了countが3の時だけ「処理: 3」が表示されず、「3はスキップします」のメッセージの後、すぐに次の繰り返し(count=4)に進んでいます。
breakとcontinueの使い分け
breakとcontinueの違いを明確にするため、同じ条件で比較してみましょう。
VS Codeでbreak_vs_continue.pyというファイルを作成し、以下のコードを入力してください。
# breakの場合print("breakの場合:")for i in range(1, 6):    if i == 3:        print("3でループを終了")        break    print(i)
print("break後の処理")
print("\ncontinueの場合:")for i in range(1, 6):    if i == 3:        print("3をスキップ")        continue    print(i)
print("continue後の処理")実行すると、以下のような結果が表示されます。
breakの場合:123でループを終了break後の処理
continueの場合:123をスキップ45continue後の処理breakは3でループ全体が終了するため、4と5は表示されません。一方、continueは3の処理だけをスキップして、4と5は正常に表示されています。
ネストしたループの基本
ネストしたループとは、ループの中にさらにループを書くことです。外側のループが1回実行される度に、内側のループが完全に実行されます。
VS Codeでnested_loop_basic.pyというファイルを作成し、以下のコードを入力してください。
# 二重ループの基本例print("二重ループの基本:")
for i in range(1, 4):  # 外側のループ: 1, 2, 3    print(f"外側のループ: {i}")        for j in range(1, 4):  # 内側のループ: 1, 2, 3        print(f"  内側のループ: {j}")        print()  # 空行を入れて見やすくするこのプログラムでは、外側のループが1回実行される度に、内側のループが3回実行されます。
実行すると、以下のような結果が表示されます。
二重ループの基本:外側のループ: 1  内側のループ: 1  内側のループ: 2  内側のループ: 3
外側のループ: 2  内側のループ: 1  内側のループ: 2  内側のループ: 3
外側のループ: 3  内側のループ: 1  内側のループ: 2  内側のループ: 3外側のループが1回実行される度に、内側のループが完全に実行されていることがわかります。全体では外側3回×内側3回=9回の処理が行われています。
二重ループでパターンを作る
ネストしたループを使って、簡単なパターンを表示してみましょう。
VS Codeでpattern_display.pyというファイルを作成し、以下のコードを入力してください。
# 星印のパターン表示print("星印のパターン:")
for row in range(1, 4):  # 行数: 1, 2, 3    for star in range(row):  # 星の数: row回        print("*", end="")  # 改行せずに表示    print()  # 行の終わりで改行この例では、1行目に1個、2行目に2個、3行目に3個の星を表示します。print("*", end="")のend=""は、改行をしないで表示するための指定です。
実行すると、以下のような結果が表示されます。
星印のパターン:******もう少し複雑なパターンも作ってみましょう。同じファイルに以下を追加してください。
# 数字の表パターンprint("\n数字の表パターン:")
for i in range(1, 4):  # 行: 1, 2, 3    for j in range(1, 4):  # 列: 1, 2, 3        print(f"{i}×{j}={i*j}", end="  ")  # 掛け算の結果を表示    print()  # 行の終わりで改行実行結果は以下のようになります。
数字の表パターン:1×1=1  1×2=2  1×3=3  2×1=2  2×2=4  2×3=6  3×1=3  3×2=6  3×3=9これは九九の表の一部を表示するパターンです。外側のループが行(掛けられる数)、内側のループが列(掛ける数)を表しています。
ネストしたループでのbreak
ネストしたループでbreak文を使う場合、どのループから抜けるかに注意が必要です。
VS Codeでnested_break.pyというファイルを作成し、以下のコードを入力してください。
# ネストしたループでのbreakprint("内側のループでbreak:")
for i in range(1, 4):  # 外側のループ    print(f"外側: {i}")        for j in range(1, 6):  # 内側のループ        if j == 3:            print("  内側のループをbreak")            break  # 内側のループのみ終了        print(f"  内側: {j}")        print("  外側のループは継続")    print()この例では、内側のループでjが3になったときにbreakが実行されます。しかし、これは内側のループのみを終了し、外側のループは継続されます。
実行すると、以下のような結果が表示されます。
内側のループでbreak:外側: 1  内側: 1  内側: 2  内側のループをbreak  外側のループは継続
外側: 2  内側: 1  内側: 2  内側のループをbreak  外側のループは継続
外側: 3  内側: 1  内側: 2  内側のループをbreak  外側のループは継続内側のループは毎回j=3で終了していますが、外側のループは最後まで実行されていることがわかります。
まとめ
本章では、ループの制御とネストについて学習しました。 理解できた内容は以下の通りです。
- break文はループを途中で終了させる
- continue文は現在の繰り返しをスキップして次に進む
- ネストしたループでは外側のループが1回実行される度に内側のループが完全に実行される
- ネストしたループでのbreak文は、その文が書かれたループのみを終了する
- 二重ループを使うことで表形式のデータやパターンを表示できる
これらの機能を使うことで、より複雑で柔軟な繰り返し処理が書けるようになりました。特にネストしたループは、表形式のデータを扱う場面や、複雑なパターンを作成する場面で重要な概念です。
次回は、関数の基本概念について学んでいきましょう。
Starterプランでより詳しく学習
この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。