Python while文

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

ここ数日、食べ過ぎで体重計に乗るのが怖くて、体重をチェックできていません。

食べ過ぎたらだめだと思っているにも関わらず、夕飯を食べたあとに膨満感が襲ってきます(笑)

食欲旺盛なのは元気な証拠だと思いますが、もうすでに肥満気味になっているので、ちょっと食べる量を減らさないといけないのが現実です。

そんな食欲と同じように、Pythonも頭がオーバーヒートするくらいしっかりと学習して、どんどんレベルアップを目指します!

それでは今日のレッスンに入っていこうと思います。

昨日の復習

昨日は、None型の判断のやり方を学習しました。

Noneを判断する際に使用するのは【is】でしたね。

box = None
if box is None:
    print('yes')

None型は、何も存在しないという値?Noneのみを持つ変数で、【==】が値や変化したBoolean型で返される値も判断してくれるのに対して、【is】は、値そのものが合致しているかどうかを判断するために使われます。

より詳しく考えようとすると余計にこんがらがってしまうので、

【is】はNone型で使う

とおぼえておいたほうがいいでしょう!

while文の書き方

while文は、条件が満たされる間は、繰り返し実行する場合に使われます。

例えば、こんな感じ

a = 0
while a <= 5:
    print(a)
    a += 1   # a = a + 1 でもOK

出力結果

0
1
2
3
4
5

変数aが5以下のときにwhile文の中のコードが繰り返し実行されます。

最初に変数aに0を代入しているので、はじめはもちろん5以下の条件を満たしているので、0を出力したあと、変数aに1を足して1回目の実行が完了します。

2回めの実行は、変数aが1になって、5以下の条件を満たして1を出力したあと変数aに1を足して変数aが2になったあと、2回目の実行が終了し、3回目の実行に進みます。

という具合に実行を続けて、変数aが5以下の条件を満たさなくなったときに、while文を終了するという流れです。

もし、最後の【a += 1】を忘れてしまうと、いつまでたっても変数aの値は0なので、永遠と0を出力し続けることになります。

いわゆるこれが無限ループです。

Pythinistaの場合、この無限ループに陥ってしまったときは、Console画面の右上にある【×】アイコンをタップして実行を中断させます。

Python while 無限ループ

無限ループにならないように気つけてコードを書きましょう。

while文をいろいろ書いてみた

とりあえずたくさん書かないことにはどんな使い方ができるのかわからないので、これまで学習した内容を取り入れながら、いくつかwhile文をかいてみました。

box = [1, 2, 3, 4, 5]
while box:
    print(box)
    box.pop()

出力結果

[1, 2, 3, 4, 5]
[1, 2, 3, 4]
[1, 2, 3]
[1, 2]
[1]

pop()でリストの値を一つ取り除いて、変数boxがFalseを返すまで、リストを出力するコードです。

if文と同じで、変数のみを指定したときは、変数がTrueの場合、つまり値が入っているときという条件になります。

a_box = []
a = 1
while len(a_box) <= 5:
    print(a_box)
    a_box.append(a)
    a += 1

出力結果

[]
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]

こちらはリスト型の空の変数a_boxを出力したあと変数a_boxに変数aを追加、変数aをプラス1してループ、変数a_boxの長さが5を超えるとループを抜けるコードです。

どんなことができるかな?と想像力を働かせながら、コードを書いて、それがうまく動作すると嬉しくなりますよね。

デバッガーで一目瞭然

どのようにコードが実行されているかを確認できるのがデバッガーです。

こちらの記事でPythonistaのデバッグの使い方を紹介しましたが、if文同様に、while文でも、どのコードを実行しているのかが一目瞭然です。

Pythonista デバッグ

デバッグってなんとなくとっつきづらいイメージがありますが、デバッグ機能を使って、どのように命令が動いているのかきちんと確認することは大切です。

動作がおかしいときは、デバッグ機能を使ってバグを見つけていきましょう!

だんだん難しくなる

ループこそプログラミングの恩恵を受けられる自動化の基本動作だと思うので、プログラミングっぽくなってきた感じがしてワクワクドキドキしています。

まだif文とwhile文を学習しただけですが、やはりプログラミングには数学的思考が必要だなと改めて感じています。

ただ歳のせいか、じっくりと時間をかけないと、頭に入ってきません。

これから、より一層プログラミング感満載の内容になっていきますが、何度も復習しながら学習していきたいと思います。

それでは、明日もGood Python!