for文と並んで繰り返し処理を実行するwhile文を説明する。
【for文】繰り返し処理
1. while文の基本形
2. breakによるwhileループの抜け出し
3. else文によるfalse時の処理
4. continueによる特定条件におけるwhileループのスキップ
5. 無限ループ
6. リファレンス
1. while文の基本形
while文は条件式がTrueの間処理を実行する。処理はインデント(通常半角スペース4つ分)して記述する。
while 条件式: 処理
for文との違いは以下の通り。
for文・・・rangeやイテラブルオブジェクトで指定した回数処理を繰り返す
while文・・・条件式がFalseになるまで処理を繰り返す
次の例ではxの2乗が100より小さい間条件式がTrueとなり、xを出力しxを1つ増やす処理が繰り返される。xが10になると2乗が100となり条件式がFalseとなるため処理が実行されずにループを抜ける。
x = 1 while x * x < 100: print(x) x += 1
実行結果
1 2 3 4 5 6 7 8 9
2. breakによるwhileループの抜け出し
whileループ内で特定の条件になった場合ループを抜ける場合breakを使う。
下の例ではif文の条件式2がTrueの場合breakが実行され続く処理2を実行せずループを抜ける。
while 条件式1: 処理1 if 条件式2: break 処理2
次の例ではxが5になるとbreak文が実行され以降の処理を実行せずwhileループを抜ける。
x = 1 while x * x < 100: if x > 5 : break print(x) x += 1
実行結果
1 2 3 4 5
3. else文によるFalse時の処理
else文はwhie文の条件式がFalseな場合の処理を記述する。
次の例では条件式がTrueの場合は処理1が、条件式がFalseの場合は処理2が実行される。
while 条件式: 処理1 else: 処理2
ただしwhile文は条件式がFalseとなるとループを抜け続く処理を実行する、つまりelseを使わなくても処理2が実行されるので、上の使い方はあまり意味がない。
while 条件式: 処理1 処理2
else文はbreak文と組み合わせることでwhileループを正常終了した場合とbreakした場合で処理を変えることができる。
breakでループを抜け出した場合は処理2が実行されない。一方、条件式1がFalseとなってループを抜けた場合処理2が実行される。
while 条件式1: 処理1 if 条件式2: break else: 処理2
4. continueによるwhileループのスキップ
continueを使うと条件が成立した際に以降の処理をスキップし次のループに移る。continueはif文と組み合わせifブロック内に書く。
条件式2がTrueならcontinueが実行され処理2が飛ばされ次のループに移る(処理1を記述するかどうかは任意)。
while 条件式1: (処理1) if 条件式2: continue 処理2
次の例ではif文の条件式でxが偶数かどうかを調べており偶数の場合はprint(x)をスキップし次のループに移る。
x = 0 while x * x < 100: x += 1 if x // 2 * 2 == x: continue print(x)
実行結果
1 3 5 7 9
5. 無限ループ
ゲームで画面をスクロールさせる場合のように同じ処理を無限に続ける場合while文で条件式そのものをTrueとすることで無限ループ(メインループ)を作る。
条件式自体がTrue、よって条件式は常に成立(True)するのでいつまでも処理が実行され無限ループとなる。
while True: 処理
ただしこのままだとプログラムが動いたまま終わらないため、break文と組み合わせある条件でループを抜け出すようにする。
次の例ではxが10になるとbreak文が実行され無限ループを抜け出す。
x = 1 while True: if x == 10: break print(x) x += 1
実行結果
1 2 3 4 5 6 7 8 9
6. リファレンス
Python 言語リファレンス > 8. 複合文 (compound statement) > 8.2. while 文
0 件のコメント:
コメントを投稿