ループ処理(forループ、whileループ)
プログラミングでは、同じ処理を繰り返し実行したい場面が多々あります。そのために使うのが「ループ処理」です。ループ処理を使えば、指定した回数や条件を満たすまで同じコードを繰り返すことができます。Pythonには主に2つのループ構造があります:for
ループとwhile
ループです。
1. ループ処理とは?
ループ処理とは、あるブロックのコードを繰り返し実行する仕組みです。繰り返す回数や条件を指定することで、同じ処理を何度も実行させることができます。たとえば、「1から10までの数字を順に表示する」といったことが簡単に実現できます。
2. forループ
for
ループは、特定の回数や範囲内で繰り返し処理を行うときに使用します。Pythonではリストや範囲(range)を使って、要素ごとに繰り返し処理ができます。
例1:リストの要素を繰り返し表示する
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
このコードはリスト内の各要素を順に表示します。出力結果は以下のようになります。
apple
banana
cherry
例2:数値の範囲を繰り返し処理する
range()
関数を使うと、特定の範囲内で繰り返し処理ができます。
for i in range(5):
print(i)
このコードでは、0
から4
までの数字が順に表示されます。
0
1
2
3
4
図1:forループの基本構造
要素 | 説明 |
---|---|
for | ループの開始を示すキーワード |
変数 | 繰り返しごとに代入される要素 |
in | ループ対象を指定するためのキーワード |
range() | 指定された範囲内の整数列を生成する関数 |
3. whileループ
while
ループは、特定の条件が「真(True)」である限り、ブロック内のコードを繰り返し実行します。条件が「偽(False)」になるとループを終了します。繰り返しの回数が事前にわからない場合や、条件を満たすまで続けたい場合に使用します。
例1:指定した条件が満たされるまで繰り返す
count = 0
while count < 5:
print(count)
count += 1
このコードは、count
が5になるまで繰り返し処理を行い、各回の値を表示します。
0
1
2
3
4
図2:whileループの基本構造
要素 | 説明 |
---|---|
while | ループの開始を示すキーワード |
条件式 | 条件が真(True)である限りループ実行 |
+= | 変数に一定の値を加算 |
4. forループとwhileループの使い分け
- forループ:繰り返しの回数が決まっているときに便利です。特にリストや範囲を順に処理する場合に使用します。
- whileループ:繰り返しの回数が決まっておらず、特定の条件を満たすまで続けるときに適しています。
5. breakとcontinue
ループの中で、break
や continue
を使って処理を制御することができます。
- break:ループを途中で終了します。
- continue:ループ内の次の反復処理に移り、以降のコードをスキップします。
例1:breakを使ったループの中断
for i in range(10):
if i == 5:
break
print(i)
出力は0
から4
までが表示され、i
が5
になるとループが終了します。
0
1
2
3
4
例2:continueを使ったスキップ
for i in range(5):
if i == 2:
continue
print(i)
このコードでは、i
が2
の場合だけスキップし、それ以外の数値が表示されます。
0
1
3
4
表1:forループとwhileループの比較
特徴 | forループ | whileループ |
---|---|---|
使用場面 | 繰り返し回数が事前に決まっている場合 | 繰り返し回数が事前に決まっていない場合 |
繰り返し方法 | リストや範囲などのシーケンスを反復処理 | 条件が真である限り繰り返し処理 |
終了条件 | シーケンスの終了またはbreak による終了 | 条件が偽になるか、break による終了 |
6. ネストされたループについて
「ネストされたループ」とは、ループの中にさらに別のループがある構造です。この構造は、2次元データ(例えば行列やリストのリスト)を処理したり、複雑なパターンを生成したりするのに便利です。具体例と共に、もう少し詳しく解説していきます。
ネストされたループの基本例
例えば、以下のコードは2つのネストされたfor
ループを使っています。外側のループが1回繰り返されるごとに、内側のループがすべての繰り返しを終えるまで処理を行います。
for i in range(3): # 外側のループ(iが0から2まで繰り返す)
for j in range(2): # 内側のループ(jが0から1まで繰り返す)
print(f"i={i}, j={j}")
出力結果は以下のようになります。
i=0, j=0
i=0, j=1
i=1, j=0
i=1, j=1
i=2, j=0
i=2, j=1
この例では、外側のループが i
の値を0
から2
まで順に設定します。そのたびに、内側のループが j
の値を0
から1
まで設定し、それぞれの i
と j
の組み合わせで処理を行います。つまり、内側のループは外側のループの1回の繰り返しごとにすべての繰り返しを終えます。
応用例:2次元リストの処理
次に、2次元リストを例にとって、ネストされたループの使い方を見てみましょう。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix: # 行ごとに繰り返し
for element in row: # 各行の要素ごとに繰り返し
print(element, end=" ")
print() # 改行
出力は次のようになります。
1 2 3
4 5 6
7 8 9
このコードでは、外側のfor
ループがリスト matrix
の各「行(リスト)」を取得し、内側のfor
ループがその行の各「要素」を取得しています。ネストされたループを使うことで、2次元データを1行ずつ表示することができます。
f の役割(f-string とは?)
Pythonの print()
関数の中に f
を付けると、「f-string」(フォーマット文字列)と呼ばれる形式で文字列を作成できます。これにより、文字列内に変数の値を直接埋め込むことができ、簡潔かつ読みやすいコードが書けるようになります。
f-stringの基本的な使い方
name = "Alice"
age = 25
print(f"My name is {name} and I am {age} years old.")
このコードは次のように出力されます
My name is Alice and I am 25 years old.
f-stringの利点
- 簡潔さ:
f"{変数}"
のように書くだけで、変数の値を文字列内に埋め込めます。 - 可読性の向上:フォーマット方法が一貫しており、視覚的にわかりやすいです。
例えば、ネストされたループの例で使用した f"i={i}, j={j}"
というコードも、i
と j
の値を埋め込んで表示しています。
f-string なしの方法(従来の書き方)
f-string
を使わない場合、次のように書くこともできます
print("i=" + str(i) + ", j=" + str(j))
この方法でも同じ出力が得られますが、コードが長くなり、可読性が下がることがあります。f-string
を使うことで、よりシンプルで読みやすいコードが書けるようになります。
まとめ
- forループ:決まった回数の繰り返しやリストなどの要素に対しての繰り返し処理に向いています。
- whileループ:特定の条件が満たされるまでの繰り返し処理に適しています。
- break や continue を使うことで、ループの制御がさらに柔軟になります。
- ネストされたループは、ループの中にもう1つのループを含む構造で、2次元データの処理や複雑なパターンを作成する際に便利です。
- f-string は、文字列内に変数の値を埋め込むための簡潔で読みやすい方法です。
f
を文字列の前に付けることで、{}
内に変数を挿入できます。
ループ処理をマスターすると、より多くのデータを効率的に処理できるようになります。さまざまなパターンを試して、実際に繰り返し処理の便利さを体感してみてください!
次のステップ:関数とモジュール
次に学ぶ「関数とモジュール」では、プログラムのコードを整理し、再利用可能な「関数」としてまとめる方法を学びます。ループや条件分岐で処理が複雑になると、コードが読みづらくなりますが、関数を使うとコードをシンプルにし、管理しやすくすることが可能です。次回は関数の基礎から、Pythonで用意されている便利なモジュールまで、コードの効率化について学んでいきましょう!
コメント