Python入門 while文で条件が成立する限り処理を繰り返し実行させる

Pythonで条件が成立している限り処理を繰り返し実行させるwhile文について解説します。

スポンサーリンク
スポンサーリンク

while文の書き方

while文は条件が成立している限り処理を繰り返し実行させる際に使用します。

while文の書き方は下記の通りです。

while文

while 条件:
    条件が成立した場合の処理1
    条件が成立した場合の処理2(複数行も可能)

「while」の行末には「:」コロンを付けます。

「条件が成立した場合の処理」の行頭はインデント(字下げ)します。

インデント(字下げ)は半角空白4つ分です。インデントしないとエラーとなります。

サンプルプログラム(ソースコード)

while文は最初に繰り返しの開始と終了の仕組み(条件と処理)を考えておくことが重要です。

ここでは、開始条件として2行目に変数countの値に「0」を代入し、終了条件を得られるように8行目では繰り返し処理されるたびに変数countの値を「1」加算しています。

# 繰り返しの開始と終了の条件に使用する
count = 0

# while文による繰り返し処理
while count < 3:
    print(count)
    # 変数の値を加算し終了条件を得られるようにする
    count = count + 1

サンプルプログラム(ソースコード)の保存先

  • 保存先(venv仮想環境):C:\code\py310\venv\trial
  • ファイル名:sample_code_016.py
  • エンコード:UTF-8

コマンドプロンプトでサンプルプログラム(ソースコード)を実行

実行すると、条件「count < 3」が成立する限りは「print(count)」と「count = count + 1」の処理が実行されます。変数countの値が「3」になると条件「count < 3」が成立しなくなりwhile文の繰り返しが終了します。

(trial) C:\code\py310\venv\trial>python sample_code_016.py
0
1
2

(trial) C:\code\py310\venv\trial>

while~else文の書き方

while~else文はwhileの繰り返し処理がすべて終了した後にelseの処理が実行されます。

while~else文の書き方は下記の通りです。

while~else文

while 条件:
    条件が成立した場合の処理1
    条件が成立した場合の処理2(複数行も可能)
else:
    繰り返し終了後に実行される処理1
    繰り返し終了後に実行される処理2(複数行も可能)

「while」と「else」の行末には「:」コロンを付けます。

「繰り返し終了後に実行される処理」の行頭はインデント(字下げ)します。

条件が成立したままの状態になると繰り返しが終了しません。このような状態を無限ループと呼びます。プログラムによっては、あえて無限ループを利用する場合もありますが、繰り返しを使用する際には終了条件が得られるようになっているか注意が必要です。

サンプルプログラム(ソースコード)

while文のサンプルプログラムに「else」以下を追加しました。

# 繰り返しの開始と終了の条件に使用する
count = 0

# while文による繰り返し処理
while count < 3:
    print(count)
    # 変数の値を加算し終了条件を得られるようにする
    count = count + 1
else:
    print("繰り返し終了後に実行")

サンプルプログラム(ソースコード)の保存先

  • 保存先(venv仮想環境):C:\code\py310\venv\trial
  • ファイル名:sample_code_017.py
  • エンコード:UTF-8

コマンドプロンプトでサンプルプログラム(ソースコード)を実行

while文の繰り返しがすべて終了した後で「print(“繰り返し終了後に実行”)」の処理が実行されます。

(trial) C:\code\py310\venv\trial>python sample_code_017.py
0
1
2
繰り返し終了後に実行

(trial) C:\code\py310\venv\trial>

breakで繰り返しを終了する

「break」は、主にif文と共に用いられ繰り返しを終了する際に使用します。

if文の条件が成立したら「break」を実行し「break」以降の処理は行わず繰り返しを終了します。

サンプルプログラム(ソースコード)

2で割り切れる数字を5個表示するプログラムです。

# 繰り返しの終了条件に使用する
count = 0

# 割られる数字で使用する
num = 0

# while文による繰り返し処理(無限ループにしている)
while True:
    # 「1」ずつ加算する
    num = num + 1
    # 除算して余りがあるかないかで奇数と偶数を判別し分岐処理
    if num % 2:
        pass
    else:
        print(num)
        # 偶数の数をカウントし終了条件を得られるようにする
        count = count + 1
    # 変数countの値が「5」になると繰り返しを終了する
    if count == 5:
        break
else:
    print("breakで繰り返しを終了するとelseの処理は実行されません。")

「break」で繰り返しを終了すると「else」の処理は実行されません。

while文中にif文が入っています。このような階層構造を入れ子(ネストとも)と呼びます。「pass」の行頭にはインデント2つ分(半角空白8個分)を記述します。if文中にif文を入れ子にしたりwhile文中にwhile文を入れ子にすることもあります。ただし、階層を深くすると複雑になりプログラムが読みづらくなるので注意が必要です。

サンプルプログラム(ソースコード)の保存先

  • 保存先(venv仮想環境):C:\code\py310\venv\trial
  • ファイル名:sample_code_018.py
  • エンコード:UTF-8

コマンドプロンプトでサンプルプログラム(ソースコード)を実行

実行すると、2で割り切れる数字を5個表示すると「break」により繰り返し処理が終了しプログラムが終了します。

「break」により繰り返しを終了すると「else」を含む以降の処理は実行されません。

(trial) C:\code\py310\venv\trial>python sample_code_018.py
2
4
6
8
10

(trial) C:\code\py310\venv\trial>

continueで以降の処理をスキップする

「continue」は、主にif文と共に用いられ「continue」以降の処理をスキップする際に使用します。

if文の条件が成立したら「continue」を実行し「continue」以降の処理は行わず繰り返しを継続します。「break」との違いは「break」は繰り返しを終了しますが「continue」は繰り返しを継続することです。

サンプルプログラム(ソースコード)

ここで注目してほしいところは12行目です。前のif文の条件が成立すると「continue」が実行され「print(count)」はスキップされます。

# 繰り返しの開始と終了の条件に使用する
count = 0

# while文による繰り返し処理
while count < 5:
    # 変数の値を加算し終了条件を得られるようにする
    count = count + 1
    # 変数countの値が「3」より小さければ
    # continue以降の処理は行わず繰り返しを継続する
    if count < 3:
        continue
    print(count)

サンプルプログラム(ソースコード)の保存先

  • 保存先(venv仮想環境):C:\code\py310\venv\trial
  • ファイル名:sample_code_019.py
  • エンコード:UTF-8

コマンドプロンプトでサンプルプログラム(ソースコード)を実行

if文の条件が成立しない「345」が表示されます。

(trial) C:\code\py310\venv\trial>python sample_code_019.py
3
4
5

(trial) C:\code\py310\venv\trial>

意図せず無限ループになった場合の対処方法

例えば「continue」以降に条件となる変数の値を変更すると処理がスキップされてしまい意図せず無限ループになってしまうことがあります。(他にも色々なケースがあります)

サンプルプログラム(ソースコード)

次のプログラムは「continue」により「count」の値が加算されないため無限ループとなります。

# 繰り返しの開始と終了の条件に使用する
count = 0

# while文による繰り返し処理
while count < 5:
    if count < 3:
        continue
    print(count)
    count = count + 1

サンプルプログラム(ソースコード)の保存先

  • 保存先(venv仮想環境):C:\code\py310\venv\trial
  • ファイル名:sample_code_020.py
  • エンコード:UTF-8

コマンドプロンプトでサンプルプログラム(ソースコード)を実行

実行すると、無限ループとなり実行結果が表示されません。

(trial) C:\code\py310\venv\trial>python sample_code_020.py

このような場合は「ctrl」キーを押しながら「c」キーを押すと実行中(無限ループ中)のプログラムを終了させることができます。(ctrl + c)

(trial) C:\code\py310\venv\trial>python sample_code_020.py
Traceback (most recent call last):
  File "C:\code\py310\venv\trial\sample_code_020.py", line 7, in <module>
    continue
KeyboardInterrupt
^C
(trial) C:\code\py310\venv\trial>

まとめ

  • while文は条件が成立している限り処理を繰り返し実行する
  • 「while」の行末には「:」コロンを付ける
  • 「条件が成立した場合の処理」の行頭はインデント(字下げ)する
  • while文を書く際は最初に繰り返しの開始と終了の条件と処理を考える
  • while~else文はwhileの繰り返し処理がすべて終了した後にelseの処理が実行される
  • 「while」と「else」の行末には「:」コロンを付ける
  • 「繰り返し終了後に実行される処理」の行頭はインデント(字下げ)する
  • 「break」は、主にif文と共に用いられ繰り返しを終了する際に使用する
  • 「break」で繰り返しを終了すると「else」の処理は実行されない
  • 「continue」は、主にif文と共に用いられ「continue」以降の処理をスキップする際に使用する
  • 意図せず無限ループになったら「ctrl + c」で実行中のプログラムを終了させる
スポンサーリンク
スポンサーリンク
Python入門
Python Start を フォローする
Python Start
タイトルとURLをコピーしました