Python

Pythonのfor・whileを途中で抜けるbreak!elseとは?

  • このエントリーをはてなブックマークに追加
  • LINEで送る

Pythonのループはfor文やwhile文を使ってループします。

でも、抜け方が今イチわからないアナタへ…

『どうやってループを途中で抜けるの?』

『ループのelseはどんなとき実行されるの?』

こんな疑問に答えます。

SE歴25年のオッサンが解説するぞい!
SEおっさん
SEおっさん



スポンサーリンク

【Python】for・whileループを途中で抜けるbreak

Pythonのループ処理はfor文やWhile文が基本。
ループというからには抜け出さなければ、無限ループとなりますよね。
通常は、ループを抜ける条件(終了条件)を指定します。

強制的にループを抜ける命令は「break」!

「break」の使い方はfor文でもwhile文でも全く同じです。
for文とwhile文で、それぞれ例文を見ていきましょう。

for文を途中で抜けるbreak

for文の書式とbreakを実装する例文です。

for文の書式

for インデックス変数 in イテラブルオブジェクト:
    処理(ここに途中でループ抜ける条件とbreakを書く)

イテラブルオブジェクトについてはコチラの記事

forループを途中で抜けるbreakの例文

# 【breakの例文】for文のrangeオブジェクト
for i in range(3):
  print(i) 
  if i == 1:
    break
0
1
例文の説明

rangeは連番を作成するイテラブルオブジェクト。
range(3)をリストにすると[0, 1, 2]となります。
rangeについてはコチラの記事

for文で取得したrangeをループさせると…
インデックス変数iが0→1→2の順に処理されるはずです。

しかし、
printは0→1で終わっています。最後の2は表示されてませんね。

たろちゃん
たろちゃん
最後の2が表示されない理由は?

最後の2が表示されない理由は…
インデックス変数iが1の時、「break」で強制的にループを抜けているためです。
コードでいうと「i==1でbreak」の箇所。

これがbreakの使い方じゃ♪
わかったかのぅ
SEおっさん
SEおっさん

この「break」の考え方はfor文でもwhile文でも全く同じですよ♪

while文を途中で抜けるbreak

while文の書式とbreakを実装する例文です。

while文の書式

while 条件式:
    処理(ここに途中でループ抜ける条件とbreakを書く)

  • 条件式を満たす(True)の間は処理を実行し続ける
  • breakで処理を終了する

whileループを途中で抜けるbreakの例文

i = 0
while i < 3:
  print(i)
  if i == 1:
    break
  i += 1
0
1
例文の説明

インデックス変数iが3より小さい間ループするので、
iはインクリメントされて、0→1→2と3回ループするはずですが、
printは0→1で終わっています。最後の2は表示されません。

最後の2は表示されない理由は、先程のfor文と全く同じ。
インデックス変数iが1の時、「break」で強制的にループを抜けているためです。
コードでいうと「i==1でbreak」の箇所です。

たろちゃん
たろちゃん
「break」の使い方は
while文もfor文と全く同じだね。


スポンサーリンク

【Python】for・whileループのbreakとelseの関係

Pythonではループ処理に独特の文法があります。
それは…
ループ中に「break」されなかった場合、「else」に分岐するというものです。
ここで「break」と「else」の関係をキッチリ学んでいきましょう。

SEおっさん
SEおっさん
お主は「else」と言えば
どんな処理をイメージする?

if文かなぁ
たろちゃん
たろちゃん

SEおっさん
SEおっさん
普通はそう思うじゃろ。
for文やWhile文にもelse
があるんじゃよ

Pythonではif文以外にfor文・While文と例外処理のtry~chatch文にelseが使用されます。

今回はfor文・While文のelseについて学びましょう!

for文・While文のelseはどんな時に使用されるの?

for文・While文でelseブロックは「break」でループを強制終了しなかった時に実行されます。

たろちゃん
たろちゃん
ようわからんです

大丈夫じゃ
書式と例文で考えてみよう♪
SEおっさん
SEおっさん

breakとelseの構文ですが、基本はfor文でもwhile文でも同じ構文です。

for文の書式

for 変数名 in イテラブルオブジェクト
  処理①(breakも書ける)
else:
  処理②

wheile文の書式

while 条件式:
  処理①(breakも書ける)
else:
  処理②

ポイントは…

処理①でbreakが実行されなかった場合、elseブロック内の処理②が実行される

ということです。for文でもwhile文でも同じですよ。

それぞれ例文をみてみましょう。

例文でLet’s Study!ループをbreakで強制的に抜けるケース

ループを条件指定で強制的にbreakする例文です。
for文とwhile文でそれぞれ説明します。

【例文】forループ

for i in range(5):
  # 処理①
  print(i)
  if i == 3:
    break
else:
  # 処理②
  print("elseじゃよ")
0
1
2
3
例文の説明

イテラブルオブジェクトであるrange(5)は[0, 1, 2, 3, 4]
最終要素は4ですが、3の時にbreakで強制的にループを抜けています。
breakが実行されたので、elseブロックは実行されてませんね。

たろちゃん
たろちゃん
ループの途中でbreakしたら、
elseブロックは実行されないってコトだね!

【例文】whileループ

while文も考え方はforループと全く同じ。
whileループを条件指定で強制的にbreakする例文です。

i = 0
while i < 5:
  # 処理①
  print(i)
  if i == 3:
    break
  i += 1
else:
    # 処理②
  print("elseじゃよ")
0
1
2
3
例文の説明

イテラブルオブジェクトであるrange(5)は[0, 1, 2, 3, 4]
最終要素は4ですが、3の時にbreakで強制的にループを抜けています。
breakが実行されたので、elseブロックは実行されてませんね。

例文でLet’s Study!ループ中にbreakを実行しないケース

ループでbreakせずにループを終了する例文です。
for文とwhile文でそれぞれ説明します。

【例文】forループ

for i in range(5):
  # 処理①
  print(i)
  if i == 5:
    break
  else:
    # 処理②
    print("elseじゃよ")
0
1
2
3
4
elseじゃよ
例文の説明

イテラブルオブジェクトであるrange(5)は[0, 1, 2, 3, 4]です。
breakが実行されていないので、途中でループを抜けずに最後までループします。
print表示も0 1 2 3 4と実行され、elseブロックも実行されます。

たろちゃん
たろちゃん
Why?
コードにはbreak文を書いているのに、
なぜelseブロックが実行されるの?

書いたかどうかではなく、
実行されたかどうかじゃ
SEおっさん
SEおっさん

break文を実装していても、ループでbreakが実行されなければ、elseブロックが実行されます。

つまり、

else内が実行される条件は「breakが実行されたどうか」です。

「breakを実装したかどうか」ではなく
「breakが実行されたどうか」がポイントってこと。

たろちゃん
たろちゃん
なるほど!
わかったよ!

【例文】whileループ

whileループでbreakせずにループを終了する例文です。
考え方はfor文と全く同じ。

i = 0
while i < 5:
  # 処理①
  print(i)
  if i == 5:
    break
  i += 1
else:
    # 処理②
  print("elseじゃよ")
0
1
2
3
4
elseじゃよ
breakとelseの関係

パターンⅠ

処理①でbreakが実行された(強制的にループを抜けた)場合
⇒elseブロック内の処理②は未実行

パターンⅡ

処理①でbreakしなかった(イテラブルオブジェクトの最終要素でループを抜けた)場合
⇒elseブロック内の処理②が実行

※break文を書いていても、実行されなければelseブロックが実行される



スポンサーリンク

【Python】まとめ!ループを抜けるbreakとelseの関係

いかがでしたでしょうか。

Pythonのfor文とwhile文を使用したループを途中で抜けるbreak

breakとelseの関係について紹介いたしました。

振り返ってみましょう!

for・Whileループを途中で抜けるbreak

iが1の時、強制的にループを抜ける例文です。

【for文】

# 【breakの例文】for文のrangeオブジェクト
for i in range(3):
  print(i) 
  if i == 1:
    break

【while文】

i = 0
while i < 3:
  print(i)
    if i == 1:
    break
  i += 1

for・Whileループのbreakとelseの関係まとめ

ループ内でbreakを実行しなかった場合、elseブロックが実行される

※ループ内にbreakが存在してても、実行しければelseブロックが実行される

for文の書式

for 変数名 in イテラブルオブジェクト
  処理①(breakも書ける)
else
  処理②

処理①でbreakが実行されなかった場合、elseブロック内の処理②が実行

wheile文の書式

while 条件式:
  処理①(breakも書ける)
else:
  処理②

処理①でbreakが実行されなかった場合、elseブロック内の処理②が実行

フローチャートで簡単にループを抜ける方法!2つの図形と3つの判定
フローチャートで簡単にループを抜ける方法!2つの図形と3つの判定
フローチャートは、なんとな~くわかってきたけど… ループの抜け方がわからんゾ 『そもそもループの図形ってあるの?』 『終了条件は、どうやって書くの?』 フローチ.....

SEおっさん
SEおっさん
ここまで読んでくれてありがとう!

「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪

「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪

LINEでのお問合わせも受付中!
LINE公式アカウント

メッセージをお待ちしています!

取得資格
  • 応用情報技術者
  • Oracle Master Gold
  • Java SE Gold
  • Java EE Webコンポーネントディベロッパ
  • Python エンジニア認定データ分析
  • 簿記2級


スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • LINEで送る

コメントを残す

*