Python のループを理解する

PythonBeginner
オンラインで実践に進む

はじめに

この実験(Lab)では、反復的なタスクの自動化に不可欠なツールである Python のループについての基本的な理解を得ます。まず、forループとイテレーション(反復)の概念を探り、リストや文字列などのシーケンスを処理する方法を学びます。

次に、forループでrange()関数を使用して数値のシーケンスを生成する方法を発見します。その後、条件に基づいた反復のためにwhileループを導入します。最後に、break文とcontinue文を使用して、forループとwhileループの両方のフローを制御する方法を学びます。

for ループとイテレーションの紹介

このステップでは、Python のforループについて学習します。forループは、リスト、タプル、文字列などのシーケンスを反復処理(イテレート)するために使用されます。イテレーションとは、シーケンス内の各項目に対して、一つずつアクションを実行することを意味します。

まず、forループを使用してリストの各要素を出力してみましょう。

左側の WebIDE ファイルエクスプローラーにファイルの一覧が表示されます。for_loop_example.pyという名前のファイルを見つけて開いてください。以下の Python コードをそのファイルに追加します。

## Define a list of numbers
numbers = [1, 2, 3, 4, 5]

## The for loop iterates over each item in the 'numbers' list.
## In each iteration, the current item is assigned to the 'number' variable.
for number in numbers:
  ## This code block is executed for each item.
  print(number)

ファイルを保存するには、Ctrl + Sを押します。

スクリプトを実行するには、WebIDE の上部にあるTerminal -> New Terminalをクリックして統合ターミナルを開きます。次に、次のコマンドを実行します。

python for_loop_example.py

以下のような出力が表示され、各数値が新しい行に出力されます。

1
2
3
4
5

forループは文字列に対しても反復処理を行うことができます。新しいファイルで試してみましょう。ファイルエクスプローラーからstring_loop.pyを開き、このコードを追加します。

## Define a string
message = "Hello"

## Iterate over each character in the 'message' string
for char in message:
  ## Print each character
  print(char)

ファイルを保存し、ターミナルから実行します。

python string_loop.py

出力は次のようになります。

H
e
l
l
o

これにより、forループはいかなるシーケンス(この場合は文字列を文字のシーケンスとして)も処理できることが示されました。

for ループでの range() 関数の使用

range()関数は、特定の回数だけアクションを繰り返す必要がある場合に便利な、forループと一緒によく使われる強力なツールです。数値のシーケンスを生成します。

range()関数は、次の 3 つの方法で使用できます。

  • range(stop): 0 からstopの手前までの数値を生成します。
  • range(start, stop): startからstopの手前までの数値を生成します。
  • range(start, stop, step): startからstopの手前まで、stepをインクリメント(増分)として数値を生成します。

これがどのように機能するか見てみましょう。ファイルエクスプローラーからrange_example.pyファイルを開き、次のコードを追加します。

## Use range(stop) to print numbers from 0 to 4
print("Numbers from 0 to 4:")
for i in range(5):
  print(i)

print("\n" + "="*20 + "\n") ## A separator for clarity

## Use range(start, stop) to print numbers from 2 to 5
print("Numbers from 2 to 5:")
for i in range(2, 6):
  print(i)

print("\n" + "="*20 + "\n") ## A separator for clarity

## Use range(start, stop, step) to print odd numbers from 1 to 9
print("Odd numbers from 1 to 9:")
for i in range(1, 10, 2):
  print(i)

ファイルを保存し、ターミナルから実行します。

python range_example.py

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

Numbers from 0 to 4:
0
1
2
3
4

====================

Numbers from 2 to 5:
2
3
4
5

====================

Odd numbers from 1 to 9:
1
3
5
7
9

stopの値がシーケンスに含まれないことに注意してください。固定回数アクションを実行する必要があるが、カウンター値自体は不要な場合は、変数名としてアンダースコア _ を使用できます。これは Python における一般的な慣習です。

## This loop will execute 5 times
for _ in range(5):
  print("Hello")

while ループの紹介

このステップでは、whileループについて学習します。forループが決められた回数だけ反復処理を行うのに対し、whileループは指定された条件がTrueである限り、実行を継続します。

whileループの基本的な構文は次のとおりです。

while condition:
  ## 実行するコード
  ## 重要:条件が最終的に False になるように変数を更新する

条件が最終的に偽(False)になることを保証することが極めて重要です。そうしないと、プログラムが永久に実行され続ける無限ループを引き起こします。

whileループを使用して 1 から 5 までの数値を印刷するスクリプトを作成してみましょう。while_loop_example.pyファイルを開き、次のコードを追加します。

## Initialize a counter variable
count = 1

## The loop continues as long as 'count' is less than or equal to 5
while count <= 5:
  ## Print the current value of count
  print(count)
  ## Increment count by 1. This is essential to prevent an infinite loop.
  count = count + 1 ## This can also be written as count += 1

ファイルを保存し、ターミナルから実行します。

python while_loop_example.py

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

1
2
3
4
5

ループの動作は次のとおりです。

  1. count1に初期化されます。
  2. 条件 count <= 5 がチェックされます。1 <= 5Trueなので、ループ本体が実行されます。
  3. 1が出力され、count2にインクリメント(増加)されます。
  4. 条件が再度チェックされます。2 <= 5Trueなので、ループが継続します。
  5. このプロセスは、count6になるまで繰り返されます。
  6. count6になると、条件 6 <= 5Falseになり、ループが終了します。

反復回数が事前にわかっている場合はforループを使用します。実行中に変化する可能性のある条件に基づいて繰り返しが必要な場合はwhileループを使用します。

break と continue によるループフローの制御

Python には、ループの通常のフローを変更するためのbreakcontinueという 2 つのステートメントが用意されています。

breakステートメントは、それが含まれるループを直ちに終了させます。実行はループの直後の最初のステートメントに進みます。

例を見てみましょう。break_example.pyファイルを開き、特定の条件が満たされたときにループを停止する次のコードを追加します。

## Iterate through numbers from 0 to 9
for i in range(10):
  ## If i is 5, the 'if' condition becomes True
  if i == 5:
    print(f"Breaking loop at i = {i}")
    ## The break statement exits the loop immediately
    break
  print(i)

print("Loop finished.")

ファイルを保存して実行します。

python break_example.py

出力は次のようになります。

0
1
2
3
4
Breaking loop at i = 5
Loop finished.

i5になったときにループが停止し、5から9までの数値は決して印刷されませんでした。

continueステートメントは、現在のイテレーションの残りをスキップし、次のイテレーションに進みます。

特定の数値をスキップするためにcontinueがどのように使用できるかを見てみましょう。continue_example.pyファイルを開き、次のコードを追加します。

## Initialize a counter
count = 0

## Loop while count is less than 10
while count < 10:
  count += 1
  ## If count is 5, the 'if' condition becomes True
  if count == 5:
    print(f"Skipping iteration at count = {count}")
    ## The continue statement skips the rest of this iteration
    continue
  ## This line is skipped when count is 5
  print(count)

print("Loop finished.")

ファイルを保存して実行します。

python continue_example.py

出力は次のようになります。

1
2
3
4
Skipping iteration at count = 5
6
7
8
9
10
Loop finished.

この場合、count5のとき、continueステートメントが実行されました。これにより、そのイテレーションではprint(count)の行がスキップされ、ループは次のイテレーションに進み、count6になりました。

まとめ

この「実験」(Lab)では、Python におけるループの基本を学びました。まず、リストや文字列などのシーケンスを反復処理するためにforループから始めました。次に、forループ用の数値シーケンスを作成するためにrange()関数を探求しました。

続いて、条件が真である限り実行されるループを作成するためにwhileループが導入されました。最後に、ループを早期に終了するためのbreakステートメントと、イテレーションをスキップするためのcontinueステートメントを使用して、ループの実行を制御する方法を学びました。これらの概念は、効率的で強力な Python プログラムを作成するための基礎となります。