条件付きのループ。 while
ステートメント
for
ループを学習すると、アクションの繰り返し回数がわかっている場合は、
for
ループ演算子を使用してプログラムを短縮できると述べました。しかし、繰り返し回数が不明な場合はどうなるでしょうか?これはよく起こります
が。
例
10 進数体系から別の数体系への数値の変換を思い出してください。答えがゼロになるまで、数値 (および割り算の結果) をその数値体系の底で割る必要があります。何回シェアするかは不明です。そして、そのようなアルゴリズムを実装するプログラムは非常にたくさんあります。
正確な反復回数がわからない場合、どのようにアルゴリズムを実装すればよいでしょうか?
プログラミングではこのような場合に備えて、条件付きのループ ステートメントがあります。
Python プログラミング言語では、条件付きループ ステートメントは
while
という単語で始まり、次の構造になります。
<プレ>
while <条件>:
ループ本体
コード>プレ>
すでにご存知のとおり、
- 条件は式であり、その結果は true または false のいずれかになります (条件文のように);
- ループ本体は繰り返す必要のあるコマンドで、インデントされています。
オペレーターはどのように働いていますか?
1. まず、プログラムは単語 while
の後の括弧内の条件を評価します。条件が満たされる (true) 場合、プログラムはループ本体に含まれるステートメントを実行します。
2. ループ本体の実行が完了すると条件チェックに戻り、再度条件チェックを行います。
3. これらのアクション (条件の確認 - ループ本体の実行) は、条件が false になるまで繰り返されます。
4. このステートメントの最初の実行時に条件がすぐに満たされない場合 (false)、プログラムはループ本体を実行しません。
この演算子の動作を分析すると、ループ本体には条件に影響を与える演算子が含まれている必要があることが明らかになるはずです。
たとえば、ループ内で条件で使用される変数の値がインクリメントされる場合があります。
「サイレント カウント」 と呼ぶプログラムの例。
私たちの代わりにプログラムが例えば10まで数えてみましょう
。
プログラムは「Start
」というフレーズを出力する必要があります。 「Finish
」と「Finish
」を押すと、これらのアクションの間に計算中の数値が表示されます。
たとえばこんな感じ
です。
スタート
します。
1 2 3 4 5 6 7 8 9 10
仕上げ
て
while
ループを使用するプログラムは次のようになります。
print("開始")
私は= 1
私が <= 10 の間:
print(i, end=" ")
i += 1 # 変数の変更に影響を与える演算子、
# 立ったままの状態
print() # カーソルを新しい行に移動
print(「終了」)
プレ>
このプログラムでは、開始点である変数 i = 1
に値を割り当てます。
さらに、i
変数の値が必要な値より大きくない (つまり、以下である) 限り、次のことを行います。
1.変数 i
の値を表示します。
2.変数 i
の値を 1 ずつ増やします。この演算子は括弧内の条件の値に影響します。変数 i
はインクリメントされます。これは、ある時点で条件 i <= 10
が false になることを意味します。これは、i
が 11 に等しくなったときに発生します。この場合、ループ本体は実行されなくなり、プログラムはループの後の次のステートメントを実行します。 print()
と print("Finish")
です。