while文によるループ処理

while文によるループ処理

while文によるループ処理

 while構文 は条件式が満たされている(すなわち条件式が Trude と評価されている)間、コードブロックの内容を繰り返し実行します。

 while 条件式:
     実行するコードブロック

 for文を用いたループ と異なり、繰り返し変数もイテラブルオブジェクトもありません。ただ条件式を添えるだけのシンプルな記述です。while文を使って数字を 1 から 10 まで順に表示するコードを書いてみます。

# WHILE_01

# 1~10 の数字を順番に表示するプログラム

# xをint型で定義(初期値は0)
x = 0

# xが10未満の間は処理を繰り返す
while x < 10:
    x += 1
    # 間隔を開けて横並びにxの値を表示
    print(x, " ", end = "")
1  2  3  4  5  6  7  8  9  10

 上のコードの条件式は「 x が 10 未満の間」となっていますが、実行結果を見ると 10 まで表示されています。これは x に 9 が入っているときに、x に 1 を加えて表示するという処理を行なった後で「 x が 10 以上になった」と判断してループを終了しているからです。
 

while文を用いた条件分枝

 while文と if文を組合わせて条件分枝させる例を見てみます。
 次のサンプルコードを実行すると、100 以下の整数の中から 7 の倍数だけを選んで表示します。

# WHILE_02

# 7の倍数を表示するプログラム

# xをint型で定義(初期値は0)
x = 0

# xが100未満の間は処理を繰り返す
while x < 100:
    x += 1
    if x % 7 == 0:
        print(x, " ", end = "")
7 14 21 28 35 42 49 56 63 70 77 84 91 98

 このコードでも、条件式は x < 100 としてあります。
 99 に 1 を加えて 7 で割った余りが 0 になるかどうかを処理するからです。
 

無限ループに要注意!

 while文は条件式が True である間は処理を延々と繰り返すので、もし、いつまでもこの条件式が False に切り替わらないようなコードを書くと、無限ループになってしまいます。たとえば次のようなコードです(絶対に実行しないでください!)。

# このコードは絶対に実行しないでください!
x = 1

while x >= 1:
    x += 1
    print(x, "", end = "")

 このコードでは x の初期値が 1 であり、while文にある「 x は 1 以上」という条件式を満たしています。そしてループの中で x に 1 を加えていくので、この条件式はいつまでも True と評価されて無限ループに陥ってしまいます。ちょっとした不等号の向きの入力ミスなどで、こういうことが起こってしまうので、while文を含むコードを実行するときは何度も注意深く確かめるようにしてください。