こんにちは。ryoです。
今回はPythonのfor文とともによく使われるelseについて解説します。
この記事では、
・for文の使い方
・for文とelseの使い方
などの基本的な使い方について解説します。さらに、
・elseとbreakの関係
・elseを使わない方法
についてをサンプルコードや関連する記事など紹介しながら、解説します。
一緒にelseについての理解を深めていきましょう!
※ この記事のコードはPython 3.7, Ubuntu 18.04で動作確認しました。
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
for文の使い方
まずは今回の記事の基本となるfor文の使い方について見ていきましょう。
for文はループ処理をするための基本的な構文です。
for文についての基本的な解説はこちらの記事をご覧ください。
for文とelseの使い方
for文について理解できたところで、for文とelseを組み合わせた使い方を見ていきましょう。
こちらのサンプルコードをご覧ください。
for i in range(3): print(i) else: print("Done")
実行結果
0 1 2 Done
elseの中の処理は、for文の中のすべての処理が終わった後に実行されます。
for文をrange関数で3回ループして、その処理が終わった後にDoneという文字列がprint関数で表示されています。
このようにfor文のあとにelseがある場合は、
for文(else以外の部分)→elseの処理→終了
という流れになっています。
for文と同じループ処理を行うwhile文についても、elseを使うことが出来ます。
詳しくはこちらの記事をご覧ください。
また、サンプルコードではrange関数についても触れました。
range関数について不安な方は、こちらの記事をご覧ください。
elseとbreakの関係
for文はbreakを使うとループを抜け出すことが出来ます。
こちらのサンプルコードを見てみましょう。
for i in range(5): print(i) if i == 3: break
実行結果
0 1 2 3
for文をrange関数で5回ループさせていますが、そのループが4回目(i=3)に達するとbreakでfor文を抜け出しています。
ただこのbreakとelseを組み合わせて使う場合、注意しなければならないところがあります。
それはbreakでループを抜けなかったときにのみ、elseが実行されるということです。
こちらのサンプルコードを見てみましょう。
for i in range(5): print(i) if i == 3: break else: print("else is worked")
実行結果
0 1 2 3
breakでループを抜けたのでelseが実行されないことがわかりましたね。
iという変数が3になったときにbreakが実行されて、elseの下にあるprint関数は実行されていません。
次に、breakはあるけれどもbreakが実行されないという場合を見てみましょう。
for i in range(5): print(i) if i == 10: break else: print("else is worked")
実行結果
0 1 2 3 4 else is worked
for文の中のif文は、決して成り立つことはないのでbreakが実行されないサンプルコードを作りました。
この場合、elseはしっかりと実行されましたね。
これでbreakの有無が問題ではなく、breakでループを抜けなかったときにelseが実行されるということがわかりました。
elseを使わない方法
elseはfor文を抜ける直前に行いたい処理がある場合、とても役に立つことがわかりました。
ここでelseについての理解を深めるために、elseを使う場合のコードと、elseを使わない場合のコードを見比べてみましょう。
range関数の中から、3を見つけた場合は「3 is found」、見つからなかった場合は「3 is not found」と表示します。
まずは、elseを使うコードです。
for i in range(5): if i == 3: print("3 is found") break else: print("3 is not found")
実行結果
3 is found
非常に見やすく、簡潔なコードに仕上がりました。
次はelseを使わないコードです。
flag = False for i in range(5): if i == 3: flag = True break if flag: print("3 is found") else: print("3 is not found")
実行結果
3 is found
for文の上にbool型のflag変数を追加しました。
i==3を満たす時にflag変数がTrueになり、breakで抜け出します。
その後にflag変数をif文で評価して、flagがTrueならば(3が見つかったのなら)「3 is found」という文字列を、見つからなければ「3 is not found」という文字を返します。
一見elseを使っているように見えますが、elseを使っているのはif文の中で、for文には関わっていません。
このようにfor文の中で使われるelseは、使うべきところで使うととても簡潔なコードを書くことが出来ます。
まとめ
この記事ではfor文とelseを組み合わせた使い方について解説しました。
for文とelseを組み合わせると、elseはfor文の処理がすべて終わった後に実行されます。
breakとelseを組み合わせて使う場合は、breakが実行されるとelseは実行されないということに気をつけましょう。
Pythonのfor文とelseで、読みやすく簡潔なコードを書いていきましょう!