while文の構文
while文の基本的な構文は以下になります。
1 2 3 4 5 6 7 8 9 10 |
while 条件文: 処理 if ループを抜ける条件文: break if ループ先頭に戻る条件文: continue else: ループ正常終了時の処理 |
while文で必須の構文
while文のループ処理を書く場合に、必須なのはwhile文の行と、そこからインデントされた処理の部分です。この部分があればwhile文として成立します。
1 2 |
while 条件文: 処理 |
while文の条件文に一致している間はずっとwhileの中のブロックの処理が繰り返されます。条件文が終わらない場合は「無限ループ」になります。
他のbreak文、continue文、elseブロックは省略可能です。
while文の条件文の右にはコロン(:)を付けます。付けていない場合はエラーになります。
ループを抜けるbreak文
whileループの途中で条件によってループを抜けたい場合はbreak文でループを終了することができます。
1 2 3 4 5 |
while 条件文: 処理 if ループを抜ける条件文: break |
一般的にbreak文を使う用途としては、それ以上ループしても意味が無い場合や処理を継続したくない、というような場合に利用されます。
break文でループを抜けた場合はelse文も含めて抜けるため、else文のブロックは実行されません。
次ループの先頭に戻るcontinue文
条件によってループの以降の処理を行わず次のループ処理の先頭に戻る場合はcontinue文を使います。
1 2 3 4 5 6 7 |
while 条件文: 処理 if ループ先頭に戻る条件文: continue 処理 |
一般的にcontinue文を使う用途としては、ループ中の処理でなんらかのチェック処理を行い、そのチェックに引っかかったら以降は処理しない、というような場合に利用されます。
while文が正しく終了した場合に実行されるelse文
while文と同じインデントでelseを指定しておくと、ループが正常終了した場合にのみ実行される処理を書くことが出来ます。
1 2 3 4 |
while 条件文: 処理 else: ループ正常終了時の処理 |
言い方を変えると、while文の条件文に当てはまらなくなった場合(条件文不一致でwhileループを終了した場合)にelse文のブロックが処理されることになります。
else文は省略しても構いません。
while文の使い方
1 2 3 4 |
i = 0 while i < 3: print(i) i = i + 1 |
実行結果
0
1
2
単純なwhile文はこのようなコードになります。
条件文に「i < 3」とあり、変数iが3より小さい間はループする、という意味になります。
print関数と変数iへ1加算する処理の2行がありますが、どちらもwhile文のブロックの中に含まれるため、while文の条件文に一致する間は繰り返し実行されます。
変数iはwhile文の直前で0に初期化され、while文のブロックの中で1ずつ加算しているため、print関数で初期化時の値の0の出力から始まり、ループごとに1、2と出力されます。
3が出力されないのは変数iが3の場合に「i < 3」の条件に一致せずwhile文のループが終了しているためです。
break文とcontinue文の使い方
break文とcontinue文は通常はなんらかの条件文と組み合わせて書きます。
以下は変数iの値によってcontinue文やbreak文を行う条件があるサンプルです。
1 2 3 4 5 6 7 8 9 |
i = 0 while i >= 0: if i < 2: i = i + 1 print('continue') continue print(i) if i >= 3: print('break') break print("loop end") i = i + 1 |
実行結果
continue
continue
2
loop end
3
break