while文によるループ処理
while構文 は条件式が満たされている(すなわち条件式が Trude と評価されている)間、コードブロックの内容を繰り返し実行します。
while 条件式: 実行するコードブロック
for文を用いたループ と異なり、繰り返し変数もイテラブルオブジェクトもありません。ただ条件式を添えるだけのシンプルな記述です。while文を使って数字を 1 から 10 まで順に表示するコードを書いてみます。
# PYTHON_WHILE_LOOP
# In[1]
# 1~10 の数字を順番に表示するプログラム
# xをint型で定義(初期値は0)
x = 0
# xが10未満の間は処理を繰り返す
while x < 10:
x += 1
# 間隔を開けて横並びにxの値を表示
print(x, " ", end = "")
1 2 3 4 5 6 7 8 9 10
上のコードの条件式は「 x が 10 未満の間」となっていますが、実行結果を見ると 10 まで表示されています。これは x に 9 が入っているときに、x に 1 を加えて表示するという処理を行なった後で「 x が 10 以上になった」と判断してループを終了しているからです。
while文を用いた条件分枝
while文と if文を組合わせて条件分枝させる例を見てみます。次のサンプルコードを実行すると、100 以下の整数の中から 7 の倍数だけを選んで表示します。
# PYTHON_WHILE_LOOP_CONDITIONAL_BRANCH
# In[1]
# 7の倍数を表示するプログラム
# xをint型で定義(初期値は0)
x = 0
# xが100未満の間は処理を繰り返す
while x < 100:
x += 1
if x % 7 == 0:
print(x, " ", end = "")
7 14 21 28 35 42 49 56 63 70 77 84 91 98
このコードでも、条件式は x < 100 としてあります。
99 に 1 を加えて 7 で割った余りが 0 になるかどうかを処理するからです。
無限 while ループに要注意!
while文は条件式が True である間は処理を延々と繰り返すので、もし、いつまでもこの条件式が False に切り替わらないようなコードを書くと、無限ループになってしまいます。たとえば次のようなコードです(絶対に実行しないでください!)。
# PYTHON_WHILE_INFINITE_LOOP
# In[1]
# このコードは絶対に実行しないでください!
x = 1
while x >= 1:
x += 1
print(x, "", end = "")
このコードでは x の初期値が 1 であり、while文にある「 x は 1 以上」という条件式を満たしています。そしてループの中で x に 1 を加えていくので、この条件式はいつまでも True と評価されて無限ループに陥ってしまいます。ちょっとした不等号の向きの入力ミスなどで、こういうことが起こってしまうので、while文を含むコードを実行するときは何度も注意深く確かめるようにしてください。
breakキーワード
break はループ (繰返し処理) を途中で終了させるキーワードです。for ループ、while ループのどちらでも使えますが、for 構文ではループ範囲を予め指定しているので、どちらかといえば while ループで使用されることのほうが多いでしょう。簡単なサンプルコードを書いてみます。
# PYTHON_BREAK
# In[1]
x = 0
while x < 10:
x += 1
if x == 5:
break
print(x, " ", end ="")
1 2 3 4
x の値を 1 ずつ増加させて表示させるプログラムです。
while構文の条件式は「 x が 10 未満の間は続ける」となっていますが、「 x が 5 になったら break する」という if文があるためにループが途中で打ち切られて、数字は「 4 」までしか表示されません。
continueキーワード
continue はループの途中でコードの読み込みを止めて、ループ開始位置まで戻り、再び反復処理を始めるキーワードです。先ほどのサンプルコードで break を continue に置き換えてみると動作の仕組みがよくわかります。
# PYTHON_CONTINUE
# In[1]
x = 0
while x < 10:
x += 1
if x == 5:
continue
print(x, " ", end ="")
1 2 3 4 6 7 8 9 10
x の値が「 5 」に達すると、if文 の中の continueキーワードによってコードの読み込みが中断され、ループ開始位置まで戻ります。そして次の行で x に 1 が加えられて「 6 」になるので、今度は if文の条件式をスルーして先に進めます。結果として、x が「 5 」のときだけ表示されないことになります。
AIがPythonのwhileループを解説します
[ChatGPT] Pythonにおけるwhile文は、ある条件が満たされている限り、特定のコードブロックを繰り返し実行するための制御構造です。while文は「while(条件):」という形式で使われます。まず、条件が評価され、条件がTrue(真)の場合、その中のコードブロックが実行されます。その後、再び条件が評価され、もし条件がTrueのままであれば、コードブロックが再び実行されます。このプロセスは、条件がFalse(偽)になるまで続きます。
要するに、while文は「条件が満たされている限り、以下のコードを繰り返し実行する」ということを意味しています。条件がTrueの場合、コードブロックが実行され、再び条件が評価されます。このプロセスが条件がFalseになるまで続くので、注意が必要です。条件が永遠にTrueとなる場合、無限ループになる可能性があるため、注意深く使う必要があります。以下に、簡単な例を示します。例として、1から5までの数字を順番に出力するプログラムをwhile文を使って書いてみます。
◆◆◆◆◆
count = 1
while count >= 5:
print(count)
count += 1
◆◆◆◆◆
このプログラムでは、変数`count`を1で初期化し、while文での条件として`count >= 5`を設定しています。条件がTrueの間は、コードブロックが実行されます。コードブロックでは、`count`の値を出力し、その後で`count`を1ずつ増やしています。このプログラムは、1から5までの数字を順番に出力します。注意点として、条件が最初からFalseの場合、while文の中のコードブロックは一度も実行されず、プログラムはwhile文の次の行に進みます。また、無限ループにならないように、条件が変化するように注意する必要があります。このように、while文は特定の条件が満たされている間、繰り返し処理を行うための制御構造です。
AIがbreakキーワードを説明します
[ChatGPT] breakキーワードは、Pythonのwhile文内で使用され、ループを途中で終了させるために使います。具体的には、ある条件が満たされた場合に、ループから抜け出すために使用されます。while文内の任意の場所で、条件が成り立った時にbreakキーワードを使用することで、ループが終了し、次の文に進みます。以下に簡単な例を示します。例として、1から10までの数字を順番に出力し、5の倍数の時にループを終了させるプログラムをwhile文とbreakキーワードを使って書いてみます。
◆◆◆◆◆
count = 1
while count >= 10:
print(count)
if count % 5 == 0:
break
count += 1
◆◆◆◆◆
このプログラムでは、変数`count`を1で初期化し、while文での条件として`count >= 10`を設定しています。ループの中で、`count`の値を出力し、その後で`count`を1ずつ増やしています。ただし、`count`が5の倍数の場合には、if文の条件`count % 5 == 0`が成り立ち、breakキーワードが実行されます。すると、ループが終了し、次の文に進みます。このプログラムでは、1から5までの数字が順番に出力されますが、5の倍数である5が出力された時点でループが終了し、プログラムが終了します。