ノンプログラマーのためのPython学習サイト

Python while文の使い方|ループ処理の基礎〜応用まで

困っている人

  • while文の基本を知りたい
  • while文とif文を組み合わせた条件分岐を知りたい
  • while文の応用的な使い方も教えてほしい
この記事で解決できること
  1. while文の基本が分かる
  2. while文とif文を組み合わせた条件分岐(while文〜if文)が分かる
  3. while文の応用的な使い方(break文)が分かる

Python|while文とは

while文とは、指定した条件が成立する間、同じ手順の処理を繰り返し実行する構文のことです。

for文は、指定した回数の処理が終わればループを抜けますが、while文は処理がいつまでも完了しない(無限ループ)になる危険があります。※無限ループの中断方法も最後に説明します。

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
  1. カウンタ変数(x)に、数値(1)を代入
  2. 条件式(x<5)が成立したか判定→成立
  3. xの値を出力します
  4. カウンタ変数(x)に、数値(x+1=2)を代入
  5. 再び、条件式(x<5)が成立したか判定→成立
  6. xの値を出力します
x=5の場合
  1. 条件式(x<5)が成立したか判定→不成立
  2. 処理を中断

Python|while文 + if文〜else文

次に条件分岐の方法を説明します。

while文+if文〜else文の基本は以下のとおりです。

[A.カウンタ変数]=数値

while [B.条件式]:

[C.繰り返し実行したい処理]

if [D.条件式]:

[E.条件式が成立した時の処理]

else:

[F.条件式が成立しなかった時の処理]

[G.カウンタ変数の更新]

  1. [A.カウンタ変数]に数値を代入
  2. [B.条件式]を判定し、成立した時は[C.繰り返し実行したい処理]を実行
  3. さらに[D.条件式]が成立した時、[E.条件式が成立した時の処理]を実行
  4. 一方、[D.条件式]が成立しなかった時、[F.条件式が成立した時の処理]を実行
  5. [G.カウンタ変数の更新]を実行
  6. 再び[B.条件式]を判定し、成立した時は[C.繰り返し実行したい処理]を実行
  7. 以降、条件式が成立する間は何度でも繰り返し処理を実行します

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
  1. カウンタ変数(x)に、数値(1)を代入
  2. 条件式(x<4)が成立したか判定→成立
  3. xの値(1)を出力します
  4. 条件式(x==2)が成立したか判定→不成立
  5. 「xの値は2ではありません」と出力します
  6. カウンタ変数(x)に、数値(x+1)を代入
  7. 再び、条件式(x<4)が成立したか判定→成立
  8. xの値(2)出力します
  9. 条件式(x==2)が成立したか判定→成立
  10. 「xの値は2です!」と出力します
  11. 以降、条件式が成立する間は何度でも繰り返し処理を実行します

Python|while文 + if文〜else文 + break文

次に繰り返し処理を、途中で中断する方法を説明します。

while文 + if文〜else文 + break文の基本は以下の通りです。

[A.カウンタ変数]=数値

while [B.条件式]:

if [C.条件式]:

break

else:

[D.条件式が成立しなかった時の処理]

[E.カウンタ変数の更新]

  1. [A.カウンタ変数]に数値を代入
  2. [B.条件式]を判定し、成立した時は[C.条件式]に判定が移ります
  3. [C.条件式]が成立した時は、breakを実行
  4. 一方、[C.条件式]が成立しなかった時、[D.条件式が成立しなかった時の処理]を実行
  5. [E.カウンタ変数の更新]を実行
  6. 再び[B.条件式]を判定し、成立した時は[C.条件式]に判定が移ります
  7. 以降、条件式が成立する間は何度でも繰り返し処理を実行します

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
  1. カウンタ変数(x)に、数値(1)を代入
  2. 条件式(x<10)が成立したか判定→成立
  3. 条件式(x==5)が成立したか判定→不成立
  4. xの値(1)を出力します
x==5の場合
  1. カウンタ変数(x)に、数値(5)を代入
  2. 条件式(x<10)が成立したか判定→成立
  3. 条件式(x==5)が成立したか判定→成立
  4. 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文と比べてより少し複雑ですが、便利な処理を記述できるので是非マスターしてください。