while ループ
CoddyのPythonジャーニー「基礎」セクションの一部。レッスン 36/77。
while ループは for ループとは異なります。for ループでは特定の range を反復処理できますが、while ループでは、特定の条件が満たされている限り反復処理を続けることができます。
while ループを使用するには、次のように記述します。
while condition:
code条件が True の場合にのみ、コードが実行されます。
条件は通常、<=(以下)、>=(以上)、<(より小さい)、>(より大きい)、または==(等しい)などの比較演算子を使って形成されます。その比較結果がTrueである限りループは実行され続け、Falseになった時点で停止します。
ループ本体の中では、通常、チェック対象の変数を更新する必要があります。これは、+=(加算して代入)、-=(減算して代入)、*=(乗算して代入)、/=(除算して代入)などの複合代入演算子を使って行います。たとえば、x *= 2はx = x * 2の省略形です。変数を更新しないと、条件が決して変化せず、ループが永遠に実行され続けます。
forループでは解決できないものの、whileで解決できるケースは数多くあります。
例えば、次の問題を考えてみましょう。
与えられた数より大きい、最小の2のべき乗を求めなさい。
これを解くために、現在の2の累乗に2を繰り返し掛け、与えられた数より大きくなるまで続けるwhileループを使用します:
number = 27
power_of_two = 1
while power_of_two <= number:
power_of_two *= 2
print(power_of_two)ここでは、power_of_two <= number は比較演算子を使用した条件であり、power_of_two *= 2 は複合代入演算子を使用して各反復で変数を更新します。power_of_two が number を超えると、条件は False になり、ループが停止します。
チャレンジ
初心者1つの入力、float型の数値を受け取るプログラムを書いてください。
数値が3.5以上である限り、whileループを使って入力値を2で割ってください。
3.5より小さい最初の数値を出力してください。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ