第8回 python入門 while文について説明したいと思います。
最後ませ見てくださいましたら、あなたは世の中に出ている製品の仕組みの理解ができるようになります。
今回もpythonを使用してAnacondaのspyderで説明したいと思います。
プログラミングをすると、同じ処理をあるいは似たような処理を繰り返し行いたい場合があります。例えば、一例としてストーブを想像してください。ストーブでは設定温度より室内温度が低い場合に石油を燃焼し続けて、室内を暖かくしなければなりません。もし燃焼を止めてしまいますと、極寒の地に住む人は危険な状態に陥ってしまうためです。
ここで、今まで学んできた知識で設定温度より、室内温度が低い場合に石油を燃焼し続けるプログラムを作成することは困難です。
皆さんはおそらくこのように記載すると思います
if ストーブスイッチ==ON:
石油を燃焼
石油を燃焼
石油を燃焼
石油を燃焼
石油を燃焼
石油を燃焼
石油を燃焼
石油を燃焼
石油を燃焼
石油を燃焼
石油を燃焼
このように何回も書いてもよいのですが、実際に書くと疲れてしまいます。その上、中の処理に変更などがあった場合に全て変更しなければなりません。つまり、たくさんの書き直しになります。では燃焼し続けるにはどうしたら良いかと言いますと、while文を使用します。while文を用いて一定の条件がクリアされるまで、燃焼という処理をすれば良いのです。
While文の基本式はこのように記載します。
while 条件:
繰り返したい処理
ですので、今回の場合ですとこのように記載できます。
while 設定温度>室内温度:
石油を燃焼 #繰り返される処理
通常、プログラムは上から下に向かって走ります。whileではこのwhileの条件をクリアするまで、繰り返したい処理をずっとループします。ですのでこのプログラムは室内温度が設定温度以上になるまでこの石油を燃焼を何度も実行されることになります。ただ、注意しなければならないのが、逆を言いますと、この条件をクリアできなければずっとループすることになり無限ループ状態になということです。つまり、プログラムとしては燃焼しかできないプログラムになってしまいます。
※今は私たちは開発者の環境でプログラムテストしているため、手動で、プログラムを止めることができていますが。製品として、納品するもであれば、極めて注意が必要です。
では、実際にプログラムを確認してみましょう。わかりやすくするため画面に出力したいと思います。試しにこのように記載して見ます。
a = 1
while a < 10 :
print("watson")
a +=1
これで実行してみます。
そうするとこのようにwatsonが9個表示されました。
簡単に説明しますと、まず変数 a には変数の宣言時に 1 が代入されています。そしてこのwhileの条件文で当然 a は1ですので10より小さいため、このwhileの中の処理を行います。watsonを表示します、その後 a をインクリメントします。ですので、ここで a は 2 という値になっています。そしてwhileの条件文に戻ります。しかし当然 a は 2 ですので 10 より小さいため、このwhileの中の処理を行います。このようにして処理を繰り返します。while文を抜けるときはこのwhileの条件を満たさなくなったときで、今回であれば a が 10 になったときに抜けます。ですので、表示は全部で 9 文となります。
ここで応用編です。この後に問題を上げます、ぜひ皆さんも実際に考えて見ください。それでは問題です。
5科目のテスト成績をwhile文を用いて、5科目全て60点以上なら合格。一つでも60点未満であれば不合格と表示できるプログラムを記載してください。※テストの成績は自由にお決めください。
まず前回勉強しましたlistを使って5科目の成績をまとめてみましょう。このように記載します。
studentA_test=[60,61,82,76,99]
答え確認をするために60点未満もあるリストを作っておきましょう
studentB_test=[60,61,82,50,99]
次に全てが60点以上なら合格、1つでも60点未満であれば不合格と表示とあります。つまり成績1つ1つを確認しなければなりません。書き方は二通りあります。ちょっとずるいですが今回は裏道のみご紹介します。
studentA_test=[60,61,82,76,99]
studentB_test=[60,61,82,50,99]
count=0
while 5>count :
if studentA_test[count]<60 :
print("不合格")
break
count+=1
else:
print("合格")
これで実行しますとこのように合格のみが出力されました。ここで、studentA_testをstudentB_testに変更して実行してみますと、このように不合格が出力されました。もうすでにwhileやこのブレイクについては説明しましたので割愛します。この最後のelse文というのはwhile文にかかっておりましてwhile文の条件を満たさなくなった時につまり最後に一回通ります。
つまりここでのelse文の使い方は、while文で全ての科目確認したところbreak処理をすることがなかった。つまり不合格の学科がなかったので、最後に合格を表示しますという使い方です。これは教科書などには載っていませんので、是非覚えて置いてください。
はい、今回はwhile文についてということでストーブを例にしたWhile文の仕組みから、実際にwhile文を用いて繰り返し処理を行って見ました。また、応用編として、裏技もご紹介しました。次回の講座ではfor文についての内容となっています是非ご覧ください。本日と違った繰り返し処理をご紹介しています。
以上で、python入門8を終了と致します。ご静聴ありがとうございました。(๑╹ω╹๑ )
コメント