Python入門

繰り返し処理(while文)

~python.入門~繰り返し処理(while文)

whileは「一まとまりの処理を繰り返し実行する」ために使う構文です。

ここでは「whileとは何?」「whileはどうやって使うの?」「whileの便利な使い方を知りたい」といった方に、whileの使い方を解説します。

YouTubeも公開していますので、動画や音声で聞きたい方はぜひご覧ください。

【Python入門】繰り返し処理(while文)

whileの基本的な使い方

ではwhileの使い方を見ていきましょう。

whileは、条件を満たし続ける限り、同じ処理を繰り返します。まずは実際にwhileを使って、繰り返し処理を実行してみましょう。

num = 1
sum = 0
while num <= 5:
    print(num)
    sum += num
    num += 1
print("--")
print(sum)

[出力結果]

1
2
3
4
5
--
15

これは「1から5までの合計値を出力する」プログラムです。

初めに、変数numに1、変数sumに0を代入しています。numはsumに足し合わせる数値です。

次にwhileです。num <= 5が条件式です。whileではこの条件がTrueであり続ける限り、インデントされた一連の処理が繰り返し実行されます。最初にnumを1で初期化したので、whileは条件を満たしています。

while内では次の処理をしています。

  1. 変数numの現在の数値を出力
  2. sumにnumを加算
  3. numに1を加算

3番目でnumに1を加算しているので、いずれnumは6になります。

numが6になると、num <= 5の条件を満たせなくなるので、whileの繰り返しから抜け出します。numは1ずつ加算され、1、2、3、4、5と繰り返すたびに数値が変わっています。結果として、sumには「1 + 2 + 3 + 4 + 5」の合計値が入ることになり、15が出力されています。

これがwhileの基本的な使い方です。

whileもifと同じくインデントが必要なので注意しましょう。

[構文]

while 条件式:
    # インデント開始(空白)
    命令1
    命令2
    命令3
# インデント終了

無限ループとbreak

先ほどの繰り返し処理では、変数numが6に到達するため、num <= 5の条件を満たさず、whileを抜け出せました。

しかし、間違えて num >= 0にしてしまったらどうなるでしょうか?
実際にやってみましょう。

num = 1
sum = 0
while num >= 0: #変更
    print(num)
    sum += num
    num += 1
print("--")
print(sum)

どうでしょうか?

恐らくずっと動かない状態、またはずっと動き続ける状態になるかと思います。また、実行環境によってはタイムアウトになっているかもしれません。もしPythonをインタラクティブモードで動かしている場合は、Controle + zキーで強制終了できます。

このように、whileは処理を無限にさせることができます。
このことを「無限ループ」と呼びます。

また、無限ループの状況でも、break文を使うことでwhileから抜け出せます。
breakの使い方を見てみましょう。

import random
count = 0;
while True: #条件は常にTrueなので無限ループ
    count += 1
    i1 = random.randint(1, 6)
    i2 = random.randint(1, 6)
    i3 = random.randint(1, 6)
    if ((i1 + i2 + i3) == 3):
        break
print("1のゾロ目が出ました。試行回数は" + str(count) + "です。")

[出力結果]

1のゾロ目が出ました。試行回数は187です。

これは「3つの数値が全て1が出るまで繰り返し処理を続ける」プログラムです。

変数countは繰り返し処理をするたびに1ずつ増加していきます。また、今回も辞書の説明の時に使った「random」モジュールを使っています。変数i1〜i3には1〜6の整数がランダムで入ります。そして、i1〜i3が全て1だった場合、break文でwhileを抜け出しています。最後に1のゾロ目が出るまでの試行回数を出力しています。

無限ループは危険性もありますが、breakをうまく使うことで、こういったプログラムを組むこともできます。

continue文

最後にcontinueについて解説します。

breakはwhileを中断し、終了するために使いましたが、continueは「今の繰り返しをスキップし、次の繰り返し処理をしたい」場合に使います。

では例を見てみましょう。

import random
list = []
count = 0
max_num = 10
while len(list) < max_num:
    count += 1
    i = random.randint(1, max_num)
    if i in list:
        continue #iがlistに入っていたらスキップ
    list.append(i)
print("1から" + str(max_num) + "までの全ての整数が揃いました。試行回数は" + str(count) + "です。")
print(list)

[出力結果]

1から10までの全ての整数が揃いました。試行回数は39です。
[1, 8, 2, 3, 6, 5, 10, 4, 7, 9]

これは「ランダムに整数を取り出し、1から10が揃うまで繰り返し続ける」プログラムです。

if文の i in listは「listの中に変数iと同じ整数がいるか」をチェックしています。

同じ整数がいる場合はcontinueでその後の処理をスキップし、次の繰り返し処理を実行しています。

タイトルとURLをコピーしました