ゼロからプログラマーになるために!【基本的なプログラミング概念編:2-4】ループ処理(forループ、whileループ)

program

ループ処理(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

ループの中で、breakcontinue を使って処理を制御することができます。

  • break:ループを途中で終了します。
  • continue:ループ内の次の反復処理に移り、以降のコードをスキップします。

例1:breakを使ったループの中断

for i in range(10):
if i == 5:
break
print(i)

出力は0から4までが表示され、i5になるとループが終了します。

0
1
2
3
4

例2:continueを使ったスキップ

for i in range(5):
if i == 2:
continue
print(i)

このコードでは、i2の場合だけスキップし、それ以外の数値が表示されます。

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まで設定し、それぞれの ij の組み合わせで処理を行います。つまり、内側のループは外側のループの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の利点

  1. 簡潔さf"{変数}" のように書くだけで、変数の値を文字列内に埋め込めます。
  2. 可読性の向上:フォーマット方法が一貫しており、視覚的にわかりやすいです。

例えば、ネストされたループの例で使用した f"i={i}, j={j}" というコードも、ij の値を埋め込んで表示しています。

f-string なしの方法(従来の書き方)

f-string を使わない場合、次のように書くこともできます

print("i=" + str(i) + ", j=" + str(j))

この方法でも同じ出力が得られますが、コードが長くなり、可読性が下がることがあります。f-string を使うことで、よりシンプルで読みやすいコードが書けるようになります。


まとめ

  • forループ:決まった回数の繰り返しやリストなどの要素に対しての繰り返し処理に向いています。
  • whileループ:特定の条件が満たされるまでの繰り返し処理に適しています。
  • breakcontinue を使うことで、ループの制御がさらに柔軟になります。
  • ネストされたループは、ループの中にもう1つのループを含む構造で、2次元データの処理や複雑なパターンを作成する際に便利です。
  • f-string は、文字列内に変数の値を埋め込むための簡潔で読みやすい方法です。f を文字列の前に付けることで、{} 内に変数を挿入できます。

ループ処理をマスターすると、より多くのデータを効率的に処理できるようになります。さまざまなパターンを試して、実際に繰り返し処理の便利さを体感してみてください!


次のステップ:関数とモジュール

次に学ぶ「関数とモジュール」では、プログラムのコードを整理し、再利用可能な「関数」としてまとめる方法を学びます。ループや条件分岐で処理が複雑になると、コードが読みづらくなりますが、関数を使うとコードをシンプルにし、管理しやすくすることが可能です。次回は関数の基礎から、Pythonで用意されている便利なモジュールまで、コードの効率化について学んでいきましょう!

コメント

タイトルとURLをコピーしました
//投稿内コードにコピー表示 //コピー表示ここまで