Python でループが完了したかどうかを確認する方法

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Python でループが完了したかどうかを判断する方法を学びます。これには、for ループがどのように実行されるかを理解し、ループの完了を追跡するさまざまな手法を探索することが含まれます。

まず、基本的な for ループの例を調べ、果物のリストを反復処理してそれぞれを出力します。次に、フラグ変数を使用してループの進行状況を監視する方法を学び、最後に、ループと組み合わせて else 句を活用し、ループが正常に終了した後にのみコードを実行する方法を学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python/BasicConceptsGroup -.-> python/booleans("Booleans") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/ControlFlowGroup -.-> python/break_continue("Break and Continue") python/DataStructuresGroup -.-> python/lists("Lists") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/booleans -.-> lab-559538{{"Python でループが完了したかどうかを確認する方法"}} python/conditional_statements -.-> lab-559538{{"Python でループが完了したかどうかを確認する方法"}} python/for_loops -.-> lab-559538{{"Python でループが完了したかどうかを確認する方法"}} python/break_continue -.-> lab-559538{{"Python でループが完了したかどうかを確認する方法"}} python/lists -.-> lab-559538{{"Python でループが完了したかどうかを確認する方法"}} python/data_collections -.-> lab-559538{{"Python でループが完了したかどうかを確認する方法"}} end

ループの実行方法を学ぶ

このステップでは、Python で for ループがどのように実行されるかを学びます。ループは、コードブロックを複数回繰り返すことができる基本的なプログラミング構造です。ループの動作原理を理解することは、効率的で有効なプログラムを作成するために重要です。

まずは簡単な例から始めましょう。VS Code エディタを使用して、~/project ディレクトリに loop_example.py という名前のファイルを作成します。

## loop_example.py
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

このコードは、果物のリストを反復処理し、各果物をコンソールに出力します。

このスクリプトを実行するには、VS Code のターミナルを開き、次のコマンドを実行します。

python loop_example.py

次のような出力が表示されるはずです。

apple
banana
cherry

コードで何が起こっているかを分解してみましょう。

  1. fruits = ["apple", "banana", "cherry"]: この行は、"apple"、"banana"、"cherry" という 3 つの文字列が含まれる fruits という名前のリストを作成します。
  2. for fruit in fruits:: この行は for ループを開始します。ループは fruits リストの各要素を反復処理します。各反復で、現在の要素が fruit 変数に割り当てられます。
  3. print(fruit): この行はループ内にあります。fruit 変数の値をコンソールに出力します。

ループは、リスト内の各果物に対して 1 回ずつ、合計 3 回実行されます。最初の反復では、fruit は "apple" なので、"apple" が出力されます。2 番目の反復では、fruit は "banana" なので、"banana" が出力されます。3 番目の反復では、fruit は "cherry" なので、"cherry" が出力されます。

次に、各果物のインデックスを含めるようにスクリプトを変更しましょう。loop_example.py ファイルを次のように変更します。

## loop_example.py
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(f"Index: {index}, Fruit: {fruit}")

この変更後のコードでは、enumerate() 関数を使用して、リスト内の各要素のインデックスと値の両方を取得しています。

再度スクリプトを実行します。

python loop_example.py

次のような出力が表示されるはずです。

Index: 0, Fruit: apple
Index: 1, Fruit: banana
Index: 2, Fruit: cherry

enumerate() 関数は、(インデックス,要素) のペアのシーケンスを返します。各反復で、インデックスは index 変数に割り当てられ、要素は fruit 変数に割り当てられます。

ループの実行方法を理解することは、データのコレクションを処理できるプログラムを作成するために不可欠です。次のステップでは、ループの実行を制御するためのより高度な手法を学びます。

完了を追跡するためにフラグ変数を設定する

このステップでは、ループ内のタスクの完了を追跡するためにフラグ変数を使用する方法を学びます。フラグ変数は、特定の条件が満たされたかどうかを示すブール型の変数(True または False)です。これは、プログラムの流れを制御するための一般的な手法です。

リスト内で特定の数値を検索し、見つけたらすぐにループを停止するシナリオを考えてみましょう。VS Code エディタを使用して、~/project ディレクトリに flag_example.py という名前のファイルを作成します。

## flag_example.py
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5
found = False  ## フラグ変数を初期化する

for number in numbers:
    print(f"Checking number: {number}")
    if number == target:
        found = True
        print(f"Found the target: {target}")
        break  ## ループを抜ける

if found:
    print("Target found in the list.")
else:
    print("Target not found in the list.")

このコードでは、found という名前のフラグ変数を False に初期化しています。ループは numbers リストを反復処理します。現在の数値が target と等しい場合、foundTrue に設定し、メッセージを出力し、break 文を使用してループを抜けます。ループの後、found の値をチェックします。True の場合、ターゲットが見つかったことを示すメッセージを出力します。そうでない場合、ターゲットが見つからなかったことを示すメッセージを出力します。

このスクリプトを実行するには、VS Code のターミナルを開き、次のコマンドを実行します。

python flag_example.py

次のような出力が表示されるはずです。

Checking number: 1
Checking number: 2
Checking number: 3
Checking number: 4
Checking number: 5
Found the target: 5
Target found in the list.

ターゲットの数値(5)が見つかるとすぐにループが停止することに注意してください。break 文はループを抜け、それ以上の反復を防ぎます。

次に、リスト内に存在しない数値を検索するようにスクリプトを変更しましょう。target 変数を 15 に変更します。

## flag_example.py
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 15
found = False  ## フラグ変数を初期化する

for number in numbers:
    print(f"Checking number: {number}")
    if number == target:
        found = True
        print(f"Found the target: {target}")
        break  ## ループを抜ける

if found:
    print("Target found in the list.")
else:
    print("Target not found in the list.")

再度スクリプトを実行します。

python flag_example.py

次のような出力が表示されるはずです。

Checking number: 1
Checking number: 2
Checking number: 3
Checking number: 4
Checking number: 5
Checking number: 6
Checking number: 7
Checking number: 8
Checking number: 9
Checking number: 10
Target not found in the list.

この場合、ループはターゲットの数値を見つけることなくリスト全体を反復処理します。found 変数は False のままで、「Target not found in the list.」というメッセージが出力されます。

フラグ変数を使用することは、ループ内のタスクの完了を追跡する簡単で効果的な方法です。この手法は、リスト内の要素を検索する、ユーザー入力を検証する、またはファイルからのデータを処理するなど、さまざまなシナリオで役立ちます。

ループで else 句を使用する

このステップでは、Python の for ループで else 句を使用する方法を学びます。for ループの else 句は、ループが正常に完了したとき、つまり break 文によってループが終了されなかったときに実行されます。これは、特定の要素を見つけられなかったり、エラーに遭遇しなかった場合にのみ行うべきアクションを実行するのに便利です。

前のステップでリスト内のターゲット数値を検索した例を見直してみましょう。else 句を使用して、ターゲット数値が見つからなかった場合にメッセージを出力することができます。VS Code エディタを使用して、~/project ディレクトリに else_example.py という名前のファイルを作成します。

## else_example.py
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 15

for number in numbers:
    print(f"Checking number: {number}")
    if number == target:
        print(f"Found the target: {target}")
        break
else:
    print("Target not found in the list.")

このコードでは、else 句は for ループに関連付けられています。ループが target を見つけることなく完了した場合(つまり break 文が実行されなかった場合)、else 句内のコードが実行されます。

このスクリプトを実行するには、VS Code のターミナルを開き、次のコマンドを実行します。

python else_example.py

次のような出力が表示されるはずです。

Checking number: 1
Checking number: 2
Checking number: 3
Checking number: 4
Checking number: 5
Checking number: 6
Checking number: 7
Checking number: 8
Checking number: 9
Checking number: 10
Target not found in the list.

target(15)が numbers リストに含まれていないため、ループは正常に完了し、else 句が実行されて「Target not found in the list.」というメッセージが出力されます。

次に、リストにターゲット数値を含めるようにスクリプトを変更しましょう。target 変数を 5 に変更します。

## else_example.py
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5

for number in numbers:
    print(f"Checking number: {number}")
    if number == target:
        print(f"Found the target: {target}")
        break
else:
    print("Target not found in the list.")

再度スクリプトを実行します。

python else_example.py

次のような出力が表示されるはずです。

Checking number: 1
Checking number: 2
Checking number: 3
Checking number: 4
Checking number: 5
Found the target: 5

この場合、target(5)が見つかったときに break 文によってループが終了されます。したがって、else 句は実行されません。

for ループの else 句は、ループが break 文によって中断されることなく正常に完了したときにコードを実行する簡潔な方法を提供します。これは、ループの実行中に特定の条件が満たされなかった場合にのみ特定のアクションを実行する必要があるケースを処理するのに便利です。

まとめ

この実験では、Python の for ループがどのように動作するかを学びました。具体的には、果物のリストを反復処理し、各果物とそのインデックスを出力する方法を学びました。この実験では、for ループの基本構造を示し、enumerate() 関数を使用して反復処理中にリスト内の各要素のインデックスと値の両方にアクセスする方法を紹介しました。

最初の例では、果物のリストを反復処理し、各果物を出力しました。その後の修正では、enumerate() を使用してインデックスと果物の両方を出力し、ループ内で要素の位置と値の両方にアクセスする方法を示しました。