mei_13のPython講座 ロゴ

【解説】Pythonの繰り返し処理「for文」をマスターしよう




🐍 初心者歓迎!月額4,000円で質問し放題のPython講座
(1時間4,000円の伴走型ビデオチャット指導も受付中!)
🚀 講座の詳細を見る 📩 質問・お問い合わせ

Pythonの繰り返し処理「for文」をマスターしよう


Hirokiのアイコン
【Hiroki】 Yukiさん、こんにちは。今日はPythonの「繰り返し処理」について教えてほしいんです。 同じようなプログラムを何度も書くのが大変で……。例えば、1から10まで数字を表示させるだけでも、10行書くのは非効率ですよね?


Yukiのアイコン
【Yuki】 Hiroki君、こんにちは。そうですね、プログラミングの良さは、単純な作業をコンピュータに任せられるところにあると思います。 10回ならまだ手で書けるかもしれませんが、もしそれが1万回だったら……きっと途方に暮れてしまいますよね。 そんな時に役立つのが「for文」という仕組みです。 わたしも、誰かの役に立つために作られた小さなツールやコードを見ると、なんだか心が温かくなるのですが、このfor文もまさに、人間を退屈な作業から解放するために生まれた、とても優しい機能なんですよ。 今日はこのfor文の基本から、少し応用的な使い方まで一緒に見ていきましょう。


Hirokiのアイコン
【Hiroki】 よろしくお願いします!「人間を退屈な作業から解放する」って、なんだかワクワクしますね。

for文の基本的な書き方


Yukiのアイコン
【Yuki】 まずは、for文の最も基本的な形を確認しましょう。 Pythonのfor文は、「リストや範囲などの集まりから、要素を一つずつ取り出して繰り返す」という性質を持っています。 基本的な構文はこんな感じです。

for 変数 in 繰り返す対象:
    実行する処理


Hirokiのアイコン
【Hiroki】 思っていたよりもシンプルですね。でも、「繰り返す対象」には何を入れればいいんでしょうか?


Yukiのアイコン
【Yuki】 一般的には、複数のデータが入っている「リスト」や、一定の範囲の数値を生成する「range関数」を使うことが多いです。 例えば、好きな果物のリストを作って、それを一つずつ表示させるコードを書いてみましょうか。

fruits = ["りんご", "バナナ", "みかん"]

for fruit in fruits:
    print(fruit)


Hirokiのアイコン
【Hiroki】 なるほど!fruitsというリストの中から、順番に一つずつ名前が取り出されて、fruitという変数に代入されているんですね。 これなら、リストの中身が100個あっても、たった2行のfor文で全部表示できそうです。


Yukiのアイコン
【Yuki】 その通りです。さすがHiroki君、理解が早いですね。 ここで大切なポイントが一つあります。Pythonでは、繰り返したい処理の前に「インデント(字下げ)」を入れるというルールがあるんです。 通常はスペース4つ分ですね。これがないと、どこまでが繰り返す範囲なのか、Pythonくんが迷ってしまうので気をつけてあげてください。


Hirokiのアイコン
【Hiroki】 あ、本当だ。printの前にスペースがありますね。 もしインデントを忘れたら、エラーになっちゃうんですか?


Yukiのアイコン
【Yuki】 はい、IndentationErrorというエラーが出てしまいます。 わたしも、Webデザインをしている時にフォントの指定が少しでもズレていると気になって眠れなくなってしまうのですが、Pythonも構造のズレにはとっても厳しいんです。 でも、慣れてしまえばこのインデントのおかげで、コードがとても綺麗に見えるようになると思いますよ。

range関数を使った数値の繰り返し


Hirokiのアイコン
【Hiroki】 次は、僕が最初に言っていた「1から10まで数字を表示する」方法を知りたいです。 リストを自分で作るのは、やっぱり大変そうなので……。


Yukiのアイコン
【Yuki】 ふふ、そうですよね。そんな時はrange()関数を使うのが便利だと思います。 range()を使うと、指定した回数分の数値を自動的に用意してくれるんです。 例えば、5回繰り返したい時はこう書きます。

for i in range(5):
    print(i)


Hirokiのアイコン
【Hiroki】 ええと、実行してみると……「0, 1, 2, 3, 4」と表示されました。 5まで表示されるかと思ったんですが、0から始まるんですね。


Yukiのアイコン
【Yuki】 そうなんです。プログラミングの世界では、数は0から数え始めることが多いんです。 もし「1から5まで」を表示したい場合は、range(1, 6)という風に、「開始する数」と「終わる数の次の数」を指定してあげます。


Hirokiのアイコン
【Hiroki】 「終わる数の次の数」……つまり、6未満まで、という意味ですか?


Yukiのアイコン
【Yuki】 はい、その解釈で間違いありません。 range(スタート, ストップ)という形ですね。 さらに、range(スタート, ストップ, ステップ)と書くことで、「2飛ばしで数える」といったこともできるんですよ。

# 1から10までの奇数だけを表示する
for i in range(1, 11, 2):
    print(i)


Hirokiのアイコン
【Hiroki】 これなら、偶数だけ表示したり、逆順にカウントダウンしたりすることもできそうですね。 自由自在に数字を扱える感じがして楽しいです!

繰り返しを途中で止める、飛ばす


Hirokiのアイコン
【Hiroki】 ところで、繰り返しの途中で「あ、もう目的のものが見つかったから、ここで終わりたいな」っていう時はどうすればいいんですか? 最後まで律儀に繰り返すのは、ちょっと効率が悪い気がして。


Yukiのアイコン
【Yuki】 それはとても鋭い視点ですね。 そんな時に使うのが、breakcontinueです。 breakは、そこで繰り返しを強制的に終了させます。 逆にcontinueは、その回の処理だけをスキップして、次の回へ進む命令です。 ちょっと、宝探しのようなコードを書いてみましょうか。

items = ["石ころ", "木の枝", "宝石", "泥", "砂"]

for item in items:
    if item == "宝石":
        print("宝石を見つけました!探索を終了します。")
        break
    print(item + "を拾いました。")


Hirokiのアイコン
【Hiroki】 なるほど!「宝石」が見つかった瞬間にbreakが動いて、その後の「泥」や「砂」の処理は行われないんですね。 これなら無駄な作業を減らせます。


Yukiのアイコン
【Yuki】 ええ。夜中に作業をしている時に、目的のプログラムが完成したらすぐ寝るのと同じ……かもしれませんね。 次に、continueの例も見てみましょう。 特定の条件の時だけ、処理を飛ばしたい場合です。

for i in range(1, 6):
    if i == 3:
        print("3は縁起が悪いので飛ばしますね……")
        continue
    print(i)


Hirokiのアイコン
【Hiroki】 あ、本当だ。3の時だけprint(i)が実行されずに、4に進んでいます。 使い分けが大事そうですね。

enumerate関数でインデックスも一緒に取得する


Hirokiのアイコン
【Hiroki】 for文を使ってリストを処理している時、「今、何番目の要素を処理しているか」も知りたい時があると思うんです。 どうすればいいでしょうか?


Yukiのアイコン
【Yuki】 そういう時は、enumerate()関数を使うのが、Pythonらしくて綺麗な書き方だとわたしは思います。 普通に書くとカウンター用の変数を別に用意しないといけませんが、これを使えば「インデックス番号(何番目か)」と「中身の要素」を同時に取り出せるんです。

ranking = ["Python", "JavaScript", "Ruby"]

for i, language in enumerate(ranking):
    print(f"第{i + 1}位: {language}")


Hirokiのアイコン
【Hiroki】 for i, language in ... のように、変数を2つ書けるんですね! iに0から始まる番号が入って、languageにリストの中身が入る。 これ、すごく便利そうです。


Yukiのアイコン
【Yuki】 そうですね。プログラムが今どこを処理しているかを把握するのは、エラーを防ぐためにも大切です。 こうした便利なツールを使いこなせると、書いているコードも洗練されて、読みやすくなると思います。 わたしも、少しでも使いやすくて親切なプログラムが書けるようになりたいなって、いつも思っているんですよ。

2重ループ(入れ子の構造)


Hirokiのアイコン
【Hiroki】 もう少し複雑なこともできるんでしょうか? 例えば、九九の表みたいなものを作りたい時はどうすれば……。


Yukiのアイコン
【Yuki】 九九の表ですね。それは「2重ループ」を使うのが一般的です。 for文の中に、さらにもう一つのfor文を入れる構造ですね。 ちょっと複雑に見えるかもしれませんが、ゆっくり考えてみましょう。

for i in range(1, 10):      # かけられる数
    for j in range(1, 10):  # かける数
        print(f"{i * j:2}", end=" ")
    print()  # 行を変えるための改行


Hirokiのアイコン
【Hiroki】 わあ、一瞬で九九の表ができました! 内側のfor文が1から9まで回って、それが終わったら外側のfor文が一つ進んで……という動きですね。


Yukiのアイコン
【Yuki】 その通りです。内側の時計の針が一周すると、外側の短い針が一つ進む、というイメージに近いかもしれません。 ただし、あまりにも深くループを重ねてしまうと、処理が重くなったり、人間が理解しにくい複雑なコードになってしまいます。 何事も、シンプルで控えめな美しさを保つのが、良いプログラムのコツかもしれません。

実践:リストの数値を合計してみよう


Hirokiのアイコン
【Hiroki】 最後に、何か実践的なプログラムを書いてみたいです。 for文を使って、リストの中にある数字を全部足す、みたいなことはできますか?


Yukiのアイコン
【Yuki】 もちろんです。それはfor文のとても得意な仕事の一つですよ。 合計を入れるための変数を用意して、そこに一つずつ足していく方法ですね。

numbers = [12, 45, 78, 34, 91]
total = 0

for num in numbers:
    total += num
    print(f"現在、{num}を足しました。合計は{total}です。")

print(f"最終的な合計は {total} でした。")


Hirokiのアイコン
【Hiroki】 total += numで、どんどん今の合計値に新しい数字を上乗せしていくんですね。 これを使えば、平均値を出したり、特定の条件に合う数字だけを合計したりもできそうです。


Yukiのアイコン
【Yuki】 はい、その応用力があれば、もうfor文はマスターしたも同然だと思います。 データを一つずつ丁寧に扱っていく感覚は、プログラミングの基礎であり、一番大切な部分だとわたしは感じています。 Hiroki君の書いたコードが、いつか誰かを笑顔にする小さなツールになったら、わたしもとっても嬉しいです。


Hirokiのアイコン
【Hiroki】 ありがとうございます、Yukiさん! 最初は難しそうに感じたけど、具体例を見ながらだとすごく分かりやすかったです。 さっそく、自分でも色々なリストを作って試してみます。


Yukiのアイコン
【Yuki】 ええ、ぜひ試してみてください。 もしエラーが出たり、よく分からないことがあったら、いつでも聞いてくださいね。 わたしはいつでもモニターのこちら側で、静かにHiroki君の学習を応援していますから……。 夜はまだ長いですし、自分のペースで、一歩ずつ進んでいきましょう。


参考資料 Python 公式ドキュメント (制御流) Python range() 関数の詳細



「for文」のサンプルコードを見る

< if文
コラム一覧に戻る
関数 >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
4,000円/60分伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

📩 質問・お問い合わせはこちら



AIアシスタント Yuki