サザエさんで学ぶプログラミングの繰り返し処理(for文・while文)|初心者向け完全ガイド

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks

プログラミングの繰り返し処理とは?

プログラミングにおける「繰り返し処理(ループ)」は、同じ処理を何度も実行するための基本的な制御構造です。本記事では、国民的アニメ「サザエさん」のキャラクターや日常のシーンを例に、Pythonの繰り返し処理をわかりやすく解説します。

プログラミング初心者の方でも、サザエさん一家の親しみやすいエピソードを通じて、ループ処理の基本から実践的な使い方までマスターできます。

1. for文の基礎:磯野家の家族を紹介しよう

1-1. 基本的なfor文

サザエさん一家の家族全員に挨拶をする場面を想像してみましょう。

# 磯野家の家族リスト
family_members = ["サザエ", "マスオ", "タラオ", "波平", "フネ", "カツオ", "ワカメ"]

# 家族全員に挨拶
for member in family_members:
    print(f"{member}さん、おはようございます!")

実行結果:

サザエさん、おはようございます!
マスオさん、おはようございます!
タラオさん、おはようございます!
波平さん、おはようございます!
フネさん、おはようございます!
カツオさん、おはようございます!
ワカメさん、おはようございます!

1-2. range()を使ったfor文

カツオが波平さんに叱られた回数を数える場合:

# カツオが今週叱られた回数
scolded_count = 5

print("今週カツオが叱られた記録:")
for i in range(1, scolded_count + 1):
    print(f"{i}回目:「カツオ〜!」")

実行結果:

今週カツオが叱られた記録:
1回目:「カツオ〜!」
2回目:「カツオ〜!」
3回目:「カツオ〜!」
4回目:「カツオ〜!」
5回目:「カツオ〜!」

1-3. enumerate()でインデックスと値を同時に取得

サザエさんの買い物リストを番号付きで表示:

# サザエさんの買い物リスト
shopping_list = ["大根", "ネギ", "豆腐", "サンマ", "醤油"]

print("【サザエさんの買い物リスト】")
for index, item in enumerate(shopping_list, start=1):
    print(f"{index}. {item}")

実行結果:

【サザエさんの買い物リスト】
1. 大根
2. ネギ
3. 豆腐
4. サンマ
5. 醤油

2. while文の基礎:条件が満たされるまで繰り返す

2-1. 基本的なwhile文

タラオちゃんがお菓子を欲しがる場面:

# タラオちゃんのおねだり
tarao_request_count = 0
max_requests = 3

print("タラオ:「です〜」")
while tarao_request_count < max_requests:
    tarao_request_count += 1
    print(f"タラオ:「お菓子ちょうだい〜」({tarao_request_count}回目)")

print("サザエ:「はいはい、わかったわよ」")

実行結果:

タラオ:「です〜」
タラオ:「お菓子ちょうだい〜」(1回目)
タラオ:「お菓子ちょうだい〜」(2回目)
タラオ:「お菓子ちょうだい〜」(3回目)
サザエ:「はいはい、わかったわよ」

2-2. 条件式を使ったwhile文

マスオさんが残業から帰宅するまで:

# マスオさんの帰宅時刻
current_time = 18
masuo_arrival_time = 22

print("サザエ:「マスオさん、まだかしら...」")
while current_time < masuo_arrival_time:
    current_time += 1
    print(f"{current_time}時:まだ帰ってこない...")

print(f"{current_time}時:「ただいま〜」")
print("サザエ:「お帰りなさい!」")

3. ネストしたループ:二重ループの活用

3-1. 磯野家の週間予定表を作成

# 磯野家の家族(一部)
family = ["サザエ", "カツオ", "ワカメ"]
# 曜日
weekdays = ["月", "火", "水", "木", "金"]

print("【磯野家の週間お手伝い表】")
for day in weekdays:
    print(f"\n{day}曜日:")
    for person in family:
        print(f"  {person}:お手伝い担当")

3-2. サザエさんの料理メニュー表

# 一週間の献立
meals = {
    "月曜": ["味噌汁", "焼き魚", "煮物"],
    "火曜": ["カレー", "サラダ"],
    "水曜": ["肉じゃが", "お味噌汁", "漬物"]
}

print("【今週の献立】")
for day, menu in meals.items():
    print(f"\n{day}:")
    for i, dish in enumerate(menu, start=1):
        print(f"  {i}. {dish}")

実行結果:

【今週の献立】

月曜:
  1. 味噌汁
  2. 焼き魚
  3. 煮物

火曜:
  1. カレー
  2. サラダ

水曜:
  1. 肉じゃが
  2. お味噌汁
  3. 漬物

4. ループの制御:break と continue

4-1. break:ループを途中で抜ける

カツオがテストの点数を見せるのを躊躇する場面:

# カツオのテスト結果
test_scores = [85, 90, 75, 45, 88, 92]

print("波平:「カツオ、今週のテスト結果を見せなさい」")
for i, score in enumerate(test_scores, start=1):
    print(f"{i}回目:{score}点")
    if score < 50:
        print("波平:「カツオ〜!!!」")
        print("カツオ:「ギャー!」")
        break  # 悪い点数が見つかったらループ終了

print("\nカツオ:「残りのテストは見せられません...」")

実行結果:


波平:「カツオ、今週のテスト結果を見せなさい」 1回目:85点 2回目:90点 3回目:75点 4回目:45点 波平:「カツオ〜!!!」 カツオ:「ギャー!」 カツオ:「残りのテストは見せられません...」

4-2. continue:特定の処理をスキップ

ワカメが宿題チェックをする場面:

# ワカメの宿題リスト
homework_list = ["国語", "算数", "理科", "社会", "音楽"]
completed = ["国語", "理科", "音楽"]

print("ワカメの宿題チェック:")
for subject in homework_list:
    if subject in completed:
        print(f"✓ {subject}:完了!")
        continue  # 完了済みなのでスキップ
    print(f"✗ {subject}:未完了(やらなきゃ!)")

print("\nワカメ:「あと2つ頑張ろう!」")

実行結果:

ワカメの宿題チェック:
✓ 国語:完了!
✗ 算数:未完了(やらなきゃ!)
✓ 理科:完了!
✗ 社会:未完了(やらなきゃ!)
✓ 音楽:完了!

ワカメ:「あと2つ頑張ろう!」

5. 実践例:磯野家の家計簿プログラム

サザエさんが家計簿をつける実用的なプログラム例:

# サザエさんの今月の支出記録
expenses = {
    "食費": [3000, 2500, 4000, 3500],
    "光熱費": [8000, 7500],
    "交通費": [1500, 2000, 1800],
    "娯楽費": [5000, 3000]
}

print("【磯野家の今月の家計簿】\n")

total_all = 0

for category, amounts in expenses.items():
    print(f"■ {category}")
    category_total = 0
    
    for i, amount in enumerate(amounts, start=1):
        print(f"  {i}回目:{amount:,}円")
        category_total += amount
    
    print(f"  → 小計:{category_total:,}円")
    print()
    total_all += category_total

print(f"━━━━━━━━━━━━━━━━")
print(f"今月の支出合計:{total_all:,}円")
print()

# 予算チェック
budget = 50000
if total_all > budget:
    print(f"サザエ:「あら!予算オーバーだわ({total_all - budget:,}円超過)」")
else:
    print(f"サザエ:「今月は{budget - total_all:,}円の節約に成功!」")

実行結果:

【磯野家の今月の家計簿】

■ 食費
  1回目:3,000円
  2回目:2,500円
  3回目:4,000円
  4回目:3,500円
  → 小計:13,000円

■ 光熱費
  1回目:8,000円
  2回目:7,500円
  → 小計:15,500円

■ 交通費
  1回目:1,500円
  2回目:2,000円
  3回目:1,800円
  → 小計:5,300円

■ 娯楽費
  1回目:5,000円
  2回目:3,000円
  → 小計:8,000円

━━━━━━━━━━━━━━━━
今月の支出合計:41,800円

サザエ:「今月は8,200円の節約に成功!」

6. リスト内包表記:より短く書く方法

カツオのテストの偏差値を計算:

# カツオの各科目の点数
scores = [75, 82, 68, 90, 73]

# 通常のfor文で60点以上の科目を抽出
passed_subjects_normal = []
for score in scores:
    if score >= 70:
        passed_subjects_normal.append(score)

# リスト内包表記で同じ処理
passed_subjects_comprehension = [score for score in scores if score >= 70]

print("70点以上の科目:", passed_subjects_comprehension)
print("カツオ:「まあまあかな?」")

7. よくある間違いと対処法

7-1. 無限ループに注意

# ❌ 悪い例:無限ループになる
# count = 0
# while count < 5:
#     print("タラオ:です〜")
#     # count += 1 を忘れると無限ループ!

# ✅ 良い例:カウンターを忘れずに
count = 0
while count < 5:
    print(f"タラオ:です〜({count + 1}回目)")
    count += 1  # これを忘れずに!

7-2. インデックスエラーに注意

family = ["サザエ", "マスオ", "タラオ"]

# ❌ 悪い例:インデックスが範囲外
# for i in range(5):  # リストは3つしかない
#     print(family[i])  # エラーになる

# ✅ 良い例:len()を使う
for i in range(len(family)):
    print(f"{i + 1}番目:{family[i]}さん")

8. 練習問題

サザエさんに関連する練習問題で理解を深めましょう:

問題1:基本的なfor文

磯野家のペット(タマ)が一日に何回ニャーと鳴くか数えるプログラムを作成してください。

# 答え例
meow_count = 10

for i in range(1, meow_count + 1):
    print(f"{i}回目:ニャー")

問題2:条件分岐を含むループ

波平さんの髪の毛(1本)が風で揺れる様子を、風速に応じて表現してください。

# 答え例
wind_speeds = [2, 5, 8, 12, 3]

for speed in wind_speeds:
    if speed < 5:
        print(f"風速{speed}m:髪の毛は微動だにしない")
    elif speed < 10:
        print(f"風速{speed}m:髪の毛が少し揺れる")
    else:
        print(f"風速{speed}m:髪の毛が激しく揺れる!")

まとめ

本記事では、サザエさんのキャラクターや日常のシーンを通じて、Pythonの繰り返し処理を学びました。

学んだポイント:

  • for文:リストや範囲を決まった回数繰り返す
  • while文:条件が真の間、繰り返す
  • break:ループを途中で抜ける
  • continue:特定の処理をスキップする
  • ネストループ:ループの中にループを入れる
  • enumerate():インデックスと値を同時に取得
  • リスト内包表記:より簡潔にループ処理を記述

繰り返し処理は、プログラミングの基礎中の基礎です。サザエさん一家と一緒に学んだこの知識を、ぜひ実際のプログラミングに活かしてください!

次のステップ

繰り返し処理をマスターしたら、次は以下のテーマに挑戦してみましょう:

  1. 関数の作成:繰り返し使う処理を関数にまとめる
  2. リストの操作:map()、filter()などの高度な処理
  3. 辞書のループ:items()、keys()、values()の使い方
  4. 例外処理:エラーに強いプログラムを作る

プログラミングは練習が大切です。サザエさんの日常のように、毎日少しずつコードを書いて、スキルアップを目指しましょう!


関連記事:

  • Pythonの条件分岐をサザエさんで学ぶ
  • リストと辞書の使い方:磯野家のデータ管理術
  • 関数の基礎:マスオさんの仕事術で学ぶプログラミング

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks

らくらくPython塾 – 読むだけでマスター