【レッスン2-5】for文で繰り返し処理を使いこなそう|Python入門

ながみえ
【Python学習記事のアイキャッチ画像】Lesson2-5 繰り返処理(while文)を理解しよう

一つ前のLessonでは条件分岐(match文)について学習しました。

今回は繰り返し処理(for文)について見ていきます。

Lesson1:基礎文法編
Lesson2:制御構造編
・Lesson2-1:比較演算子と論理演算子を理解しよう
・Lesson2-2:条件分岐(if-else文)を理解しよう
・Lesson2-3:条件分岐(if-elif-else文)を理解しよう
・Lesson2-4:条件分岐(match文)を理解しよう
・Lesson2-5:繰り返し処理(for文)を理解しよう ◁今回はココ
・Lesson2-6:繰り返し処理(while文)を理解しよう
・Lesson2-7:繰り返しの制御を理解しよう
・Lesson2-8:エラーメッセージを読めるようになろう
・Lesson2-9:例外処理の基礎を理解しよう
・練習問題2-1:ハイアンドロー ゲームを作ろう
・練習問題2-2:数字当てゲームを作ろう
・練習問題2-3:簡単なじゃんけんゲームを作ろう
Lesson3:関数とスコープ編
Lesson4:データ構造編
Lesson5:オブジェクト指向編
次のステップ:Pythonを用いたアプリ開発

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson2-4 条件分岐(match文)を理解しよう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson2-6 繰り返処理の制御を理解しよう

for文とは?指定回数の繰り返し処理を簡単に実装

ここからfor文の説明に入ります。

ページ下部にはこのページで出てくる用語の意味をまとめた 用語集 もありますので、分からない言葉が出てきたらそちらも参考にしてください。

【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

プログラミングにおいて繰り返し処理は同じ動作を何度も実行する際に非常に便利であり、Pythonでは主に「for文」や「while文」が用いられます。

この記事では特にfor文に焦点を当てて解説し、その使い方を学びます。

Pythonにおけるfor文の基本

Pythonのfor文は指定した範囲の要素を順番に処理するために使います。

他のプログラミング言語で見られるようなインデックスを使ってループを制御することもできますが、Pythonでは通常、直接 コレクション の要素を取り出して処理するスタイルを取ります。

(コレクションとは何かは、Lesson4で詳細に学びます。今は丸暗記しましょう。)

構文は以下の通りです。

for 変数 in コレクション: # 変数がコレクションの範囲内にあるなら
    実行する処理          # この処理を実行

このシンプルな構文により、リストや文字列などに対して順次処理を行うことができます。

また、Pythonではインデント(字下げ)が非常に重要です。

Q
インデントとは?

字下げ(インデント)を入れて見やすいコードを書こう

プログラミングコードにおいて、コードの一部の行の行頭に半角スペースを4つ入れることをインデントを入れる(字下げする)と言います。

上のコードでは「実行する処理」という文字の前に半角スペースが4つあり、これがインデントです。

Pythonにおいてインデントとは、ただコードを見やすくするだけでなくその行がどのブロックに属するかを定義するものであり、非常に重要です。

インデントはどこまでがfor文の中に含まれる処理かを示しており、これがないとエラーが発生するか、意図しない動作になります。

以下の例で確認してみましょう。

for i in range(5): # 繰り返しの範囲。詳細説明は後述
    print(i)       # ここはfor文の中
print("ループが終了しました")  # ここはfor文の外

この例ではprint(i)がfor文の中に含まれており、インデントによってその範囲が明確に示されています。

for文が終了すると、インデントのないprint("ループが終了しました")が実行されます。

ちなみに同じコードをJava言語で書くと以下のようになります。

for (int i = 0; i < 5; i++) {
    System.out.println(i);
} // ここまでがfor文の中
System.out.println("ループが終了しました"); // ここはfor文の外

Pythonはfor文の中身をインデントで表すのに対して、JAVAは{}で囲います。

初心者にはJAVAの書き方が分かりやすいですが、慣れてくるとPythonの方がシンプルで綺麗なコードになると気付けるはずです。

for文の使用例|range()関数やリストを用いた繰り返し

まずは、for文のなかで良く使われるrange()関数について見ていきましょう。

range() 関数とは?

range() 関数は、指定した範囲の数値を生成するイテレータであり、以下のように記述します。

range(5)

このコードは0から4までの5つの数字を順番に生成します。すなわち range(n) は0からn-1までの連続した整数を生成します。

また、range(start, stop, step) の形式で、開始値、終了値、ステップを自由に指定することも可能です:

range(2, 10, 2)

この場合は 2, 4, 6, 8 という4つの数値を生成します。

range() は整数の列を簡潔に扱えるため、ループの回数制御に非常によく使われます。

range()関数を用いた繰り返し例

先ほどのコードをもう一度見てみましょう。

for i in range(5): # 変数iの値に、0から4までの5つの数値を順次代入
    print(i)       # ここはfor文の中
print("ループが終了しました") # ここはfor文の外

このコードはrange(5)が生成する5つの数値(0, 1, 2, 3, 4)を順番にiに代入し、それをprint()関数で出力します。

結果は以下のようになります。

0
1
2
3
4
ループが終了しました。

リストを用いた繰り返し例

次に、リスト内の文字列を順番に出力するfor文の例を示します。

※このサイトの1-01から順番に学習している方はまだリストを知らないはずなので、今は「こういうものもある」と知っておく程度で十分です。

上記のrange()関数を確実にマスターしましょう。

fruits = ["りんご", "ばなな", "チェリー"] # リストの定義
for fruit in fruits: # 変数fruitにリストfruitsの中身を順番に代入
    print(fruit)

この例では、リストfruitsの各要素が変数fruitに代入され、順に出力されます。

りんご
ばなな
チェリー
あわせて読みたい
【レッスン4-01】リストの定義と要素の追加を解説|Pythonデータ構造
【レッスン4-01】リストの定義と要素の追加を解説|Pythonデータ構造

while文との比較

for文は主に、リストや文字列のようなシーケンスに対して処理を行うのに適しています。

一方この次の記事で取り扱うwhile文は、指定した条件がTrueである限り繰り返し処理を行います。

for文とwhile文は状況に応じて使い分けることが重要です。

まとめ

Pythonのfor文は繰り返し処理を簡潔に書くための非常に便利なツールです。

特に何回繰り返すかが初めから分かっている時に役立つものであり、分からないときに有効なwhile文と使い分けることで、より柔軟な繰り返し処理を実現することができます。

注意点としてPythonのfor文はインデントを正しく使用することが非常に重要です。コードの構造を明確にし、エラーを防ぐためにも注意深く行う必要もあります。

初心者のうちはこのfor文をしっかりと理解し、基本的な繰り返し処理をマスターすることが大切です。ぜひ、実際にコードを書いて試してみましょう!

練習問題:指定回数メッセージを表示するプログラム

【Python】勉強猫がノートパソコンに向かい、練習問題に挑戦する様子。記事内の休憩用イラスト

Pythonの繰り返し処理(for文)を使って、指定された回数だけメッセージを表示するプログラムを作成してください。

今回は5回のループを行います。

問題の詳細条件

以下の要件に従ってコードを完成させてください。

  • for文を使用して、指定された範囲(0から4)を繰り返し処理すること。
  • 各繰り返しごとにフォーマット文字列(f文字列)を使用して「1回目の表示: Pythonを勉強しましょう!」の形式でメッセージを出力すること。
  • 出力されるメッセージは、回数(1, 2, 3…)に応じて変化させること。
  • 繰り返しの回数は5回とすること。

ただし、以下のような実行結果となるコードを書くこと。

1回目の表示: Pythonを勉強しましょう!
2回目の表示: Pythonを勉強しましょう!
3回目の表示: Pythonを勉強しましょう!
4回目の表示: Pythonを勉強しましょう!
5回目の表示: Pythonを勉強しましょう!

問題の答え合わせと解説

この問題の一つの正解例とそのコードの解説を以下に示します。

一つの正解例

例えば以下のようなプログラムが考えられます。

Q
正解コード
# 5回、指定されたメッセージを繰り返し表示するコード

# for文を使って0から4までの数を繰り返し処理する
for i in range(5):
    # ループの回数を出力する(iは0から始まるので、i+1で回数を1から表示する)
    print(f"{i+1}回目の表示: Pythonを勉強しましょう!")

# range(5)は0から4までの数を生成し、for文でその数を順番に処理する

正解例の詳細解説

非常にシンプルなコードのため解説はありません。

難しいと感じる方は上記の用語の説明を見返してみてください。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいPython学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson2-4 条件分岐(match文)を理解しよう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson2-6 繰り返処理の制御を理解しよう

Python用語集|for文による繰り返し処理編

今回の記事で出てきた用語・関数などを一覧で紹介します。

このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。

Python用語定義・使い方の概要解説記事へのリンク
forシーケンス(リスト、文字列など)の各要素に対して繰り返し処理を行うためのループ構文本記事
range()関数指定した回数の繰り返し処理や連番生成に使用される関数。for 文とよく組み合わせて使う本記事
while条件が真である限り処理を繰り返し続けるループ構文。条件が偽になるとループが終了するLesson2-6
インデントPythonにおけるブロック構造を示すための字下げ。正しい構文のために必須本記事

FAQ|for文の基本と応用

Q
Q1. Pythonのfor文で逆順に繰り返すにはどうすればいいですか?

range()関数にステップを指定して逆順にできます。たとえば range(10, 0, -1) とすれば10から1まで繰り返せます。

Q
Q2. for文で複数のリストを同時に処理できますか?

zip()関数を使えば、複数のリストを同時にループ処理することが可能です。for a, b in zip(list1, list2): のように記述します。

Q
Q3. for文でインデックス番号も一緒に取得したい場合は?

enumerate()を使うとインデックスと要素を同時に取得できます。例:for i, value in enumerate(my_list):

記事URLをコピーしました