【Python】レッスン2-5:for文による繰り返し処理を理解しよう
一つ前の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基礎習得者にお勧めの道5選(実務or副業)
for文の基礎|rangeとリストで反復処理を体験
for
文 は同じ処理を決められた回数だけ繰り返したり、リストや文字列・辞書などの要素を順番に取り出して処理したりするための基本構文です。
range()
での回数指定、コレクションの走査、インデックス付きの処理(enumerate()
)など、Pythonでの繰り返しはまずこの書き方から押さえます。
本記事ではfor
文の基本構文からよく使うパターン、つまずきやすいポイントまで順に解説します。
まずは基礎を押さえ、手を動かしながら次のセクションへ進みましょう。
for文の書き方|基本構文とインデント規則を理解しよう
for文は指定した範囲の要素を順番に処理するために使います。
他のプログラミング言語で見られるようなインデックスを使ってループを制御することもできますが、Pythonでは通常、直接 コレクション の要素を取り出して処理するスタイルを取ります。
(コレクションとは何かは、Lesson4で詳細に学びます。今は丸暗記しましょう。)
構文は以下の通りです。
for 変数 in コレクション: # 変数がコレクションの範囲内にある限り 実行する処理 # この処理を繰り返し実行
このシンプルな構文により、リストや文字列などに対して順次処理を行うことができます。
また、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) # 繰り返す処理 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
に代入され、順に出力されます。
りんご ばなな チェリー
まとめ|最も基本的な繰り返し処理を使いこなそう
Pythonのfor文は繰り返し処理を簡潔に書くための非常に便利なツールです。
特に何回繰り返すかが初めから分かっている時に役立つものであり、分からないときに有効なwhile文と使い分けることで、より柔軟な繰り返し処理を実現することができます。
注意点としてPythonのfor文はインデントを正しく使用することが非常に重要です。コードの構造を明確にし、エラーを防ぐためにも注意深く行う必要もあります。
初心者のうちはこのfor文をしっかりと理解し、基本的な繰り返し処理をマスターすることが大切です。ぜひ、実際にコードを書いて試してみましょう!
- サイト改善アンケート|ご意見をお聞かせください(1分で終わります)
-
本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などをアンケート形式でお伺いしています。1分だけ、ご協力いただけますと幸いです。
【Python】サイト改善アンケート
練習問題:for文を使ってみよう
この記事で学習した「for文」を復習する練習問題に挑戦しましょう。
問題|指定回数メッセージを表示するプログラムを作ろう
Pythonの繰り返し処理(for文)を使って、指定された回数だけメッセージを表示するプログラムを作成してください。
今回は5回のループを行います。
以下の要件に従ってコードを完成させてください。
- for文を使用して、指定された範囲(0から4)を繰り返し処理すること。
- 各繰り返しごとにフォーマット文字列を使用して「1回目の表示: Pythonを勉強しましょう!」の形式でメッセージを出力すること。
- 出力されるメッセージは、回数(1, 2, 3…)に応じて変化させること。
ただし、以下のような実行結果となるコードを書くこと。
1回目の表示: Pythonを勉強しましょう! 2回目の表示: Pythonを勉強しましょう! 3回目の表示: Pythonを勉強しましょう! 4回目の表示: Pythonを勉強しましょう! 5回目の表示: Pythonを勉強しましょう!
解答例|メッセージ5回ループプログラム
例えば以下のようなプログラムが考えられます。
- 正解コード
-
# for文を使って0から4までの数を繰り返し処理する for i in range(5): # ループの回数を出力する(iは0から始まるので、i+1で回数を1から表示する) print(f"{i+1}回目の表示: Pythonを勉強しましょう!") # range(5)は0から4までの数を生成し、for文でその数を順番に処理する
for文の疑問解消|FAQと用語のまとめ
初心者がつまずきやすいポイントをFAQとしてまとめ、またよく使う専門用語をわかりやすく整理しました。
理解を深めたいときや、ふと疑問に感じたときに役立ててください。
FAQ|for文に関するよくある質問
- Q1. Pythonのfor文で逆順に繰り返すにはどうすればいいですか?
-
range()
関数にステップを指定して逆順にできます。たとえばrange(10, 0, -1)
とすれば10から1まで繰り返せます。
- Q2. for文で複数のリストを同時に処理できますか?
-
zip()
関数を使えば、複数のリストを同時にループ処理することが可能です。for a, b in zip(list1, list2):
のように記述します。
- Q3. for文でインデックス番号も一緒に取得したい場合は?
-
enumerate()
を使うとインデックスと要素を同時に取得できます。例:for i, value in enumerate(my_list):
。
Python用語集|for文に関する用語一覧
今回の記事で出てきた用語・関数などを一覧で紹介します。
このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。
Python用語 | 定義・使い方の概要 | 解説記事へのリンク |
---|---|---|
for 文 | シーケンス(リスト、文字列など)の各要素に対して繰り返し処理を行うためのループ構文 | 本記事 |
range() 関数 | 指定した回数の繰り返し処理や連番生成に使用される関数。for 文とよく組み合わせて使う | 本記事 |
while 文 | 条件が真である限り処理を繰り返し続けるループ構文。条件が偽になるとループが終了する | Lesson2-6 |
インデント | Pythonにおけるブロック構造を示すための字下げ。正しい構文のために必須 | 本記事 |