Python の while ループ。 仕組み、使用例

ループは、あらゆる言語の主要なツールの XNUMX つです。 Python には XNUMX つの基本的なループがあり、そのうちの XNUMX つは while です。 それを考えてみてください。また、絵をよりよく理解するために、もうXNUMXつ。 確かに、似たようなものと比較すると、どの資料よりもはるかに理解しやすいですよね。

サイクルの概念

特定のアクションを複数回実行する必要がある場合は、ループが必要です。 実際には、サイクルの適用範囲ははるかに広いため、これは非常に単純化されています。 Python のループには、主に for と while の XNUMX 種類があります。 最も人気があるのは用です。

特定のアクションに加えて、特定のポイントまでさまざまなコードをループできます。 これは、特定の回数、または特定の条件が真である限り可能です。

特に、ループと while の種類を理解する前に、反復とは何かを理解する必要があります。 これは、現在のアプリケーション実行内の現在のサイクル中のアクションまたは一連のアクションの XNUMX 回の繰り返しです。

周期

For ループは、他の多くの言語のようにカウンターではありません。 そのタスクは、特定の一連の値を列挙することです。 これは何を意味するのでしょうか? 要素のリストがあるとしましょう。 まず、ループは XNUMX 番目、XNUMX 番目、XNUMX 番目、というように続きます。

Python でのこのループの利点は、いつループを終了するかを知るために要素のインデックスを決定する必要がないことです。 すべてが自動的に行われます。

>>> スピソック = [10, 40, 20, 30]

>>> spisok の要素の場合:

… print(要素+2)

...

12

42

22

32

この例では、変数を使用しました 素子 for コマンドの後。 一般に、名前は何でもかまいません。 たとえば、一般的な指定は i です。 そして、反復ごとに、この変数には、適切な単語と呼ばれるリストから特定のオブジェクトが割り当てられます。

この場合、リストは 10,40,20,30、XNUMX、XNUMX、XNUMX の一連の数字です。 各反復で、対応する値が変数に表示されます。 たとえば、ループが開始されるとすぐに、変数 素子 値 10 が割り当てられます。 次の反復で 40 は 20 に変わり、30 回目には XNUMX に変わり、最後にループの最後の反復で XNUMX に変わります。

サイクルの終わりの合図は、リスト内の要素の終わりです。

他のプログラミング言語のように、値の古典的な列挙を実行するためにループが必要な場合は、必要な値までの自然数のシーケンスを含むリストを作成する必要があります。

>>> スピソク = [1,2,3,4,5]

または関数を使用します レン()、 リストの長さを決定します。 ただし、この場合はループを使用することをお勧めします その間、 変数を使用する必要がないからです。

リスト内の値の順序を変更する必要がある場合は、ループします for そしてここで救助に来ます。 これを行うには、反復ごとに、リストの各要素に適切な値を割り当てる必要があります。

Whileループ

サイクルとは違う for、これは単にシーケンスの値を反復し、ループ while より多くの用途があります。 このタイプのサイクルの名前は「まだ」と訳されています。 つまり「まで」です。

これは、すべてのプログラミング言語に見られる普遍的なループです。 そして、いくつかの点で、条件演算子に似ています イチイ、 特定の条件が満たされているかどうかを確認するためのチェックを実行します。 条件演算子とは対照的に、 while 一度だけではなく、反復ごとにチェックを実行します。 条件が false の場合にのみ、ループが終了し、それに続くコマンドが実行されます。 簡単に言えば、彼が働いている状況がもはや有効ではない場合。

サイクルを描くと while 簡単に言えば、これはそのようなスキームを使用して行われます。Python の while ループ。 仕組み、使用例

プログラムのメイン ブランチ (ループの外で実行される) は、この図では青い四角形で示されています。 ターコイズはサイクルの本体を表します。 次に、ひし形は各反復でチェックされる条件です。

サイクル while 次の XNUMX つの例外が発生する可能性があります。

  1. ループの開始時に論理式が true を返さない場合は、実行前に完了しているため、単純に開始されません。 一般に、この状況は正常です。特定の状況下では、アプリケーションがループ本体に式を存在させない場合があるためです。
  2. 式が常に true の場合、ループが発生する可能性があります。 つまり、サイクルの無限スクロールに。 したがって、そのようなプログラムでは、ループまたはプログラムからの exit ステートメントが常に存在する必要があります。 ただし、この状況は、プログラムが特定の条件の真偽を判断できた場合に発生します。 これに失敗すると、プログラムが終了してエラーが返されます。 または、エラーを処理して、エラーが発生した場合に特定のコードを実行することもできます。

エラーの処理方法には膨大な数のオプションが存在する可能性があります。 たとえば、プログラムはユーザーにデータを正しく入力するように求める場合があります。 そのため、人が正の値しかないところに負の数を指定したり、数字だけであるべきところに文字を入力したりした場合、プログラムはそれを知ることができます。

While ループの例

この場合のエラーを処理するコードの例を次に示します。

n = input(“整数を入力してください: “) 

type(n) != int の場合:

    試してみてください。

        n = int(n)

    ValueErrorを除く:

        print(“入力ミス!”)

        n = input(“整数を入力してください: “) 

n % 2 == 0 の場合:

    print(“偶数”)

その他:

    print(“オッド”)

Python はコロンを使用して複雑なコード構造を宣言することに注意してください。

上記のコードでは、数値が整数かどうかをチェックする条件として定義しました。 はいの場合は、false が返されます。 そうでない場合は、真です。

演算子が使用されているコードの XNUMX 番目の部分 if、 % 演算子を使用して、除算後の剰余を見つけました。 次のステップは、数が偶数かどうかを確認することです。 そうでない場合、この場合、余りは XNUMX です。 したがって、数は奇数です。 

簡単に言うと、上記のコードは、ユーザーが入力した文字列が数値かどうかを最初にチェックします。 はいの場合、XNUMX による除算の余りがあるかどうかを確認するために XNUMX 番目のチェックが行われます。 ただし、ユーザーが入力した値が数値になるまで、XNUMX 番目のブロックは実行されません。

つまり、ループは条件が発生するまで定期的に実行されます。 この状況では、このように機能します。 

つまり、逆から行くことができます: イベントが false になるまで、特定のアクションをループします。

コード解析

次に、このコードがどのように機能するかを詳しく見てみましょう。 これを行うために、段階的に分析します。

  1. 最初に、ユーザーは文字列を入力します。これは、変数 n によって受け入れられます。 
  2. ループの使用 while この変数の型がチェックされます。 最初のエントリでは、等しくありません int型. したがって、テストの結果、この条件が真であることがわかります。 したがって、ループ本体に入ります。
  3. オペレーターの助けを借りて 試します 文字列を数値に変換しようとしています。 これが行われる場合、エラーは発生しません。 したがって、それを処理する必要はありません。 そのため、インタープリターはループの先頭に戻り、チェックの結果、整数になっていることがわかります。 では、ステップ 7 に進みましょう
  4. 変換が失敗した場合、ValueError がスローされます。 この場合、プログラム フローは except ハンドラに送信されます。
  5. ユーザーは、変数 n に割り当てられる新しい値を入力します。
  6. インタプリタはステップ 2 に戻り、再度チェックします。 整数値の場合は、手順 7 に進みます。そうでない場合は、手順 3 に従って変換が再試行されます。
  7. オペレーターの助けを借りて if 数値を 2 で割った余りがあるかどうかを判断します。 
  8. そうでない場合は、テキスト「偶数」が返されます。
  9. そうでない場合は、テキスト「odd」が返されます。

そのような例を考えてみましょう。 このサイクルが何回通過するかを判断してみてください。

合計= 100 

I = 0

i < 5 の間:

    n = int(入力())

    合計 = 合計 — n

    私 = 私 + 1 

print(「残り」、合計)

正解は 5 です。最初は、変数の値 i - ゼロ。 インタプリタは、変数が等しいかどうかをチェックします i 4以下。 はいの場合、値が返されます。 true、それに応じてループが実行されます。 値が XNUMX 増加します。

最初の反復の後、変数の値は 1 になります。チェックが実行され、プログラムはこの数が再び 5 未満であることを認識します。したがって、ループ本体が 2 回目に実行されます。 手順が似ているため、値も XNUMX 増加し、変数は XNUMX になります。

この値も XNUMX 未満です。 次に、ループが XNUMX 回目に実行され、変数に追加されます。 i 1 で、値 3 が割り当てられます。これも XNUMX 未満です。 そして、ループの XNUMX 番目の反復で、変数の値が i は 5 です (覚えている限り、最初は XNUMX でした)。 したがって、この条件はテストをパスせず、ループは自動的に終了し、その外側にある次のステップ (または、次のステップが提供されていない場合はプログラムの終了) への遷移が実行されます。

サイクルは逆方向にも発生する可能性があります。 次のコード例では、後続の各反復で、変数の現在の値から XNUMX が減算されます。 

合計= 100 

合計 > 0:

    n = int(入力())

    合計 = 合計 — n 

print(“リソースを使い果たしました”)

このプログラムが何をするか当ててみてください! 変数でそれを想像してください 合計 プログラム リソースに関する情報が格納されます。 インタープリターがリソースが存在するかどうかを確認するたびに。 そうでない場合は、「リソースが使い果たされました」というテキストが表示され、プログラムが終了します。 また、ループが繰り返されるたびに、ユーザーが指定した数だけリソースが減少します。

そして今、宿題。 変数が物理的に負にならないように上記のコードを変更してみてください。 

4のコメント

  1. si コード アハーン うそー グドビ

コメントを残す