whileループ
CoddyのPythonジャーニー「基礎」セクションの一部。レッスン 36/77。
whileループはforループとは異なります。forループでは特定のrangeを反復処理できますが、whileループでは、ある条件が満たされている限り反復処理を続けることができます。
whileループを使うには、次のように書きます。
while condition:
code条件がTrueの場合にのみ、コードが実行されます。
条件は通常、<=(以下)、>=(以上)、<(未満)、>(より大きい)、==(等しい)などの比較演算子を使って作ります。その比較結果がTrueである限りループは実行され続け、Falseになるとすぐに停止します。
ループ本体では通常、チェック対象の変数を更新する必要があります。これは、+=(加算して代入)、-=(減算して代入)、*=(乗算して代入)、/=(除算して代入)のような複合代入演算子を使って行います。たとえば、x *= 2はx = x * 2の省略形です。変数を更新しないと、条件が変わらず、ループが永遠に実行され続けます。
whileを使えば問題を解決できるものの、forループでは解決できないケースはたくさんあります。
たとえば、次の問題を考えてみましょう。
与えられた数より大きい、最小の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オンラインコンパイラ