Python while文 else

Python学習【365日チャレンジ!】39日目のマスターU(@Udemy11)です。

かなり久しぶりにVBAでコードを書こうとおもったら、全く意味がわからなかったので、ネットで調べつつなんとか目的の動作ができるようになりました。

丸投げのつもりはなかったのですが、Yahoo!知恵袋で質問したら、まるごとコードを書いてくれた神のような人がいてびっくり!

ただね~

そのコードがどうも美しくないんですよね。

なので、ネットをいろいろとさまよって、なんとかforループを使ったいかにもプログラミングっぽいコードがかけたので、勝手に一人でニヤけてしまいました。

さて、Python学習でも、そろそろfor文が登場しますが、今日はwhile else文を学習します。

昨日の復習

昨日は、無限ループを学習しました。。。。。

じゃなくて、break文とcontinue文を学習しましたね。

【while True:】で始めるwhileループはbreakを使わないと無限ループにはまってしまいます。

意図せず無限ループに陥らないために、しっかりと復習しておきましょう!

Pythonistaの場合、無限ループになっているかどうかは、画面右上部の【×】アイコンの表示でわかります。

Python while文の無限ループ

print出力を永遠に続ける場合は、ず~っと同じ出力が続くのですぐに気づきますが、出力が完了したあとの何も出力されないループは「なんか変だな」と思うまでは気づきにくいので注意が必要です。

count = 1
while True:
    if < 5:
        print(count)
        count += 1

このコードの場合、変数countが5未満の場合は、変数countを出力して5になった時点でループを終了しそうな感じがしますが、「while文がTrue(真)の場合、ループをつづける」と最初に記載しています。

つまり、変数countが5になった時点で、if文の変数countが5未満であるという条件に対して、永遠にFalseを返し続けることになります。

この場合は、whileループを抜ける条件としてbreak文を加えれば、while文を終了させることができましたね。

count = 1
while True:
    if count == 5:
        break
    print(count)
    count += 1

出力結果

1
2
3
4

もう一つ学習したのがcontinue文でした。

continue文は、while文で指定した条件の実行がループの途中であっても、continue以下のコードを実行せず、次のループに移動するメソッドです。

count = 1
while True:
    if count == 5:
        break
  if count == 3:
        count += 1    #変数に1を足すのが重要
        continue
    print(count)
    count += 1

出力結果

1
2
4

変数を増減してbreakでwhileループを抜ける条件を指定している場合、continueの前に変数に値を足したり引いたりしておかないと、これまた無限ループにはまってしまいますので、注意が必要です。

詳しくは昨日の記事を参考にしてみてください。

それでは、本日の学習内容に入っていきましょう。

while else文

elseは、if文の基本で学習しましたが、while文でも同じように使うことができます。

ただし、あまり実際のプログラミングで、whileと一緒にelseを使うことはしないので、こんな使い方ができるということだけ頭の片隅に入れておきましょう。

number = 1
while number < 5:
    print(number)
    number += 1
else:
    print('Fin!')

出力結果

1
2
3
4
Fin!

whileと一緒にelseを使えば、ループの条件を満たさなくなったときにループを抜けるのではなく、else以下の命令を実行してからループを抜けます。

上記のコードでは、変数numberが5になった時点で、’Fin!’を出力してループを抜けます。

breakと一緒に使うと

else文もwhileループを抜けるということではbreak文と同じですが、一緒に使うとどうなるでしょうか?

num = 1
while num < 5:
    if num == 3:
        break
    print(num)
    num += 1
else:
    print('Fin!')

出力結果

1
2

break文の条件に引っかかった時点で、whileループを抜けるため、while文の条件を満たしていたとしてもプログラムが終了します。

後ろに書かれているelse文は活躍することなく、無視されてしまいます。

こういう理由だからかどうかはわかりませんが、実際のプログラムでは、while else文はあまり使われていないようです。

できるだけシンプルに

Pythonが人気のプログラミング言語になった理由は、省けるものは省いてコードが書けるというところが大きいと思います。

久しぶりにコードを書いたVBAでは、If文は最後にEnd Ifが必要だし、Forループには必ず最後にNextが必要で、コード自体はSubから始まって、End Subで終了する必要があります。

一方で、Pythonはある意味書きっぱなしでも大丈夫で、if文なんて条件を満たしたときに実行するコードを書くだけです。

と言いつつコードを書いていると、常にsyntaxエラーなどで、Pythonから怒られちゃってるんですけどね(笑)

とにかく、手を動かしてコードをどんどん書くことでしか、Pythonをマスターする方法はないので、キーボードが悲鳴を上げるくらい!?タイピングしまくっちゃいますよ。

それでは、明日もGood Python!