困っている人
- while文の基本を知りたい
- while文とif文を組み合わせた条件分岐を知りたい
- while文の応用的な使い方も教えてほしい
- while文の基本が分かる
- while文とif文を組み合わせた条件分岐(while文〜if文)が分かる
- while文の応用的な使い方(break文)が分かる
Python|while文とは
while文とは、指定した条件が成立する間、同じ手順の処理を繰り返し実行する構文のことです。
for文は、指定した回数の処理が終わればループを抜けますが、while文は処理がいつまでも完了しない(無限ループ)になる危険があります。※無限ループの中断方法も最後に説明します。
- for文の使い方はコチラ → Python for文の使い方
while文は、「ある条件の間、繰り返す」処理に使うテクニックです。
Python|while文の基本
while文の基本形は以下のとおりです。[C.繰り返し実行したい処理]はインデント(半角スペース×4)を空けて記述してください。
[A.カウンタ変数]=値
while [B.条件式]:
[C.繰り返し実行したい処理]
[D.カウンタ変数の更新]
- [A.カウンタ変数]に値を代入
- [B.条件式]を判定し、成立した時は[C.繰り返し実行したい処理]を実行
- [D.カウンタ変数の更新]を実行
- 再び、[B.条件式]を判定し、成立した時は[C.繰り返し実行したい処理]を実行
- 一方、[B.条件式]が成立しなかった時は処理を中断
Python|while文の具体例
xの値が1からスタートし、xの値が5より小さい間はxの値を出力するコードを実行(xの値を1つずつ増加)。
x=1
while x<5:
print(x)
x=x+1
- カウンタ変数(x)に、数値(1)を代入
- 条件式(x<5)が成立したか判定→成立
- xの値を出力します
- カウンタ変数(x)に、数値(x+1=2)を代入
- 再び、条件式(x<5)が成立したか判定→成立
- xの値を出力します
x=5の場合
- 条件式(x<5)が成立したか判定→不成立
- 処理を中断
Python|while文 + if文〜else文
次に条件分岐の方法を説明します。
while文+if文〜else文の基本は以下のとおりです。
[A.カウンタ変数]=数値
while [B.条件式]:
[C.繰り返し実行したい処理]
if [D.条件式]:
[E.条件式が成立した時の処理]
else:
[F.条件式が成立しなかった時の処理]
[G.カウンタ変数の更新]
- [A.カウンタ変数]に数値を代入
- [B.条件式]を判定し、成立した時は[C.繰り返し実行したい処理]を実行
- さらに[D.条件式]が成立した時、[E.条件式が成立した時の処理]を実行
- 一方、[D.条件式]が成立しなかった時、[F.条件式が成立した時の処理]を実行
- [G.カウンタ変数の更新]を実行
- 再び[B.条件式]を判定し、成立した時は[C.繰り返し実行したい処理]を実行
- 以降、条件式が成立する間は何度でも繰り返し処理を実行します
Python|while文 + if文〜else文
さらに複雑な条件分岐の方法を説明します。
xの値が1からスタートし、xの値が4より小さい間はxの値を出力する(xの値は1ずつ増加)。かつ、xの値が2の時は「xの値は2です!」と出力し、それ以外の時は「xの値は2ではありません」と出力するコードを実行。
x=1
while x<4:
print(x)
if x==2:
print('xの値は2です!')
else:
print('xの値は2ではありません')
x=x+1
- カウンタ変数(x)に、数値(1)を代入
- 条件式(x<4)が成立したか判定→成立
- xの値(1)を出力します
- 条件式(x==2)が成立したか判定→不成立
- 「xの値は2ではありません」と出力します
- カウンタ変数(x)に、数値(x+1)を代入
- 再び、条件式(x<4)が成立したか判定→成立
- xの値(2)出力します
- 条件式(x==2)が成立したか判定→成立
- 「xの値は2です!」と出力します
- 以降、条件式が成立する間は何度でも繰り返し処理を実行します
Python|while文 + if文〜else文 + break文
次に繰り返し処理を、途中で中断する方法を説明します。
while文 + if文〜else文 + break文の基本は以下の通りです。
[A.カウンタ変数]=数値
while [B.条件式]:
if [C.条件式]:
break
else:
[D.条件式が成立しなかった時の処理]
[E.カウンタ変数の更新]
- [A.カウンタ変数]に数値を代入
- [B.条件式]を判定し、成立した時は[C.条件式]に判定が移ります
- [C.条件式]が成立した時は、breakを実行
- 一方、[C.条件式]が成立しなかった時、[D.条件式が成立しなかった時の処理]を実行
- [E.カウンタ変数の更新]を実行
- 再び[B.条件式]を判定し、成立した時は[C.条件式]に判定が移ります
- 以降、条件式が成立する間は何度でも繰り返し処理を実行します
Python|while文 + if文〜else文 + break文の具体例
xの値が1からスタートし、xの値が10より小さい間はxの値を出力する(xの値は1ずつ増加)。かつ、xの値が5の時は処理を中断するコードを実行。
x=1
while x<10:
if x==5:
break
else:
print(x)
x=x+1
- カウンタ変数(x)に、数値(1)を代入
- 条件式(x<10)が成立したか判定→成立
- 条件式(x==5)が成立したか判定→不成立
- xの値(1)を出力します
x==5の場合
- カウンタ変数(x)に、数値(5)を代入
- 条件式(x<10)が成立したか判定→成立
- 条件式(x==5)が成立したか判定→成立
- breakが実行され、処理を中断します
Python|代入演算子について
カウンタ変数の更新に使用している「x=x+1」のような記述は、効率的なコーディングに欠かせないテクニックです。
- x+=1(xの値を1増加させる) → x=x+1と同じ
- x-=1(xの値を1減少させる) → x=x-1と同じ
Python|無限ループの中断方法
条件式が常に成立するコード(カウンタ変数の更新がない等)を記述した場合、処理が無限に実行されてしまいます(無限ループ)。
その場合は、キーボードで「Ctrl+C(mac:control+C)」を押すことで、無限ループを中断させることができます。
Python|while文のまとめ
while文は、for文と同じで処理を繰り返し実行するときに使用する構文ですが、while文は条件式が成立する間、何度でも処理が実行される点が特徴です。
ただし条件式の設定に注意しないと、無限ループになってしまう危険があります。
while文はfor文と比べてより少し複雑ですが、便利な処理を記述できるので是非マスターしてください。