お帰りなさい｡
今まで､ ループでは4つ使えると習いました｡
でも､ 実はもうひとつ､ ループさせる方法があるんです｡
そして､ forループの代わりにwhileループを呼び出します｡
そして､ whileループは､ ある条件が起きている間と言う点で少し異なります｡
何とかしてくれ｡
だから､ ここにちょっとした違いがあることがおわかりいただけると思います｡
例えば､ ゼロが50より小さい間は､ 何かをしてくださいと言うこともできますし､ 例えば､ ゼロに等しいと言うこともできます｡
そして､ 50％以下でありながら､ I.と言うことになります｡
さて､ このプログラムを実行したら､ どうなると思いますか？
調べてみよう｡
実行」をクリックすると
わかりました｡
見えますか？
わかるかどうかわかりませんが､ 私は今､ このすべてをスクロールしているのです｡
ループしている､ ループしている､ ループしている､ ループしている､ ループしている｡
そして､ 実はまだプログラムが動いていることがわかりますね｡
というのも､ ループして､ ループして､ ループしていたんです｡
なぜなら､ コードを見ると､ まあ､ ゼロは常に50より小さくなってしまうからです｡
そのため､ このようなことが起こったのですが､ 私たちはそれを印刷します｡
IとPythonのインタプリタが2行目に戻って､ 「おい､ ゼロはまだ50より小さいのか」と言うのです｡
うん｡
なるほど｡
次の行を印刷します｡
ねえ､ ゼロってまだ50以下なの？
そうですね｡
なるほど｡
次の行に､ プリントします｡
そしてそれは､ ずっと続いていた｡
続けて､ 続けて｡
さて､ これが無限ループと呼ばれるものです｡
つまり､ プログラムはいつ止めればいいのかわからないのです｡
つまり､ 永遠に､ 永遠に続けるように言っているのです｡
そして､ ここにはいくつかのセーフガード（安全装置）があるんだ｡
しかし､ これをコードでやると､ プログラムがクラッシュするまでこの無限ループに陥ってしまうのです｡
このコードを実際に走らせると､ まあ､ マシンのパワーが足りなくなるまで走り続けることになる｡
何度でもやり直せる十分なリソース｡
何事にも限度がありますよね｡
だから､ whileループの場合は､ 本当に注意しなければならないのです｡
この無限ループは非常に危険である｡
では､ どうすればこれを解決できるのか｡
break文という考え方がありますが､ breakはPythonの単なるキーワードの1つです｡
そして､ ご推察の通り､ 実行をクリックすると｡
あれを見てください｡
一度しか実行されません｡
Pythonがbreakを見つけたら､ すぐに､ よし､ ワイルドループから抜け出そう､ と言うでしょう｡
5行目には「何もありません､ プログラム完了です」と表示されます｡
プログラムから抜ける｡
うーん｡
しかし､ これを50回ループさせたい場合はどうすればいいのでしょうか？
その課題を解決するにはどうしたらいいのか｡
考えてみてください｡
まあ､ 単純にIと言えばいいんですけどね｡
Iに1を足したものです｡
そして､ これをIに変更することを確認します｡
さて､ 「実行」をクリックするとどうなるのでしょうか？
やめる？
まあ､ 49歳で50回やってますからね｡
ループに戻るたびに1ずつ増えていくように､ 何度も何度も目をインクリメントしていったので､
50回も生き延びてきました｡
さて､ 以前にも紹介した「プラスイコール1」という略語があります｡
走ればいいように｡
それと同じものを見てください｡
だから､ ループからの脱却もできている｡
条件をfalseにすることができればいいのです｡
だから､ これもよく目にすることになる｡
つまり､ 野生のループから飛び出すには､ 条件をfalseにするか､ ループから抜け出すかのどちらかです｡
さて､ whileループでできるもう一つの面白いことは､ elseブロックを持つことです｡
そして､ ここではプリントを言うことができる｡
すべての作業を終了しました｡
そして､ ここをクリックすると実行されます｡
最後の最後に
見てください､ この出来栄えを｡
そして､ これは英語と同じように読めるはずですよね？
Iが50を切っている間｡
このままループしてください｡
そして､ 最後の部分で私が50になった途端､ 50が50以下ではなくなるのです｡
Pythonのインタプリタは､ よし､ その下のことはどうでもいいや､ と言いそうです｡
次の行に行きましょう､ そうでなければ､ 私は取得します｡
ですから､ この場合は他に何も起きていないんです｡
すべての作業を終えた状態で印刷することができます｡
でも､ ちょっと待ってくださいということでしょう｡
ダメなんですか｡
これをやらずに､ 私のインデントが最後にあることだけを確認する｡
実行をクリックし
それが功を奏しているのでしょう？
どうして書こうと思ったんだろう？
こちらもどうぞ｡
ここでいう特殊なケースとは､ 他にどのようなものがあるのでしょうか｡
ひとつだけ､ 便利なものがあります｡
それは､ 例えば､ ここにbreak文を追加した場合です｡
そして､ 「実行」をクリックします｡
エルフの文が印刷されないのがわかると思います｡
そしてそれは､ elseブロックがブレークがない場合にのみ実行されるからです｡
つまり､ 壁の条件がfalseに変われば､ そのままotherを実行することになるのです｡
でも､ もしブレイクがあれば､ この全体から抜け出して8番線に行くんです｡
そこで､ 隣であまり見かけないような､ ちょっとしたゲタを履かせる｡
まあでも､ これが実行されることを確認したいときにelseが使われるような特別なケースもありますよね？
break文がない場合のみ､ break文がなくてもループが何をしていても終了している場合のみです｡
一息ついて､ もう少しループしながら探検してみましょう｡