4. 繰り返し処理で効率アップ

前回は条件分岐について学びました。今回は、同じ処理を効率よく繰り返す方法を学んでいきましょう。

4.1 for 文で決まった回数繰り返す

for文は、決まった回数の繰り返しを行うときに使います:

5回「こんにちは」と表示する

# 5回「こんにちは」と表示する
for i in range(5):
    print("こんにちは")

# 繰り返しの番号を使う
for i in range(3):
    print(f"{i + 1}番目の挨拶:こんにちは")

# 文字列の各文字を処理する
name = "Python"
for char in name:
    print(char)

for文のポイント

  • 繰り返す回数が決まっているときに使う
  • iはカウンター変数(0から始まる)
  • インデントで繰り返す処理を示す

4.2 range 関数で連続した数字を扱う

range関数を使うと、数字の範囲を簡単に指定できます:

0から4まで表示

# 0から4まで表示
for i in range(5):
    print(i)  # 0, 1, 2, 3, 4

# 1から5まで表示
for i in range(1, 6):
    print(i)  # 1, 2, 3, 4, 5

# 2ずつ増やす
for i in range(0, 10, 2):
    print(i)  # 0, 2, 4, 6, 8

# カウントダウン
for i in range(5, 0, -1):
    print(i)  # 5, 4, 3, 2, 1

4.3 while 文で条件が変わるまで繰り返す

while文は、条件が満たされる間ずっと繰り返します:

カウントダウンタイマー

# カウントダウンタイマー
count = 5
while count > 0:
    print(count)
    count = count - 1
print("時間切れ!")

# パスワード入力
password = ""
while password != "secret":
    password = input("パスワードを入力してください:")
print("ログイン成功!")

# 合計が100を超えるまで数を足す
total = 0
count = 0
while total <= 100:
    count += 1
    total += count
print(f"{count}回で合計が{total}になりました")

4.4 break, continue で繰り返しをコントロール

breakとcontinueを使うと、繰り返しの流れを制御できます:

繰り返しを途中で終了

# breakで繰り返しを途中で終了
while True:
    answer = input("続けますか?(y/n):")
    if answer == "n":
        print("終了します")
        break

# continueで次のループへスキップ
for i in range(1, 6):
    if i == 3:
        print("3はスキップします")
        continue
    print(f"数字:{i}")

4.5 リストと for 文でまとめて処理する

リストの要素を順番に処理するのにfor文が便利です:

点数リストの平均を計算

# 点数リストの平均を計算
scores = [85, 92, 78, 90, 88]
total = 0
for score in scores:
    total += score
average = total / len(scores)
print(f"平均点:{average}")

# 名前リストから「田中」さんを探す
names = ["山田", "田中", "佐藤", "鈴木"]
for name in names:
    if name == "田中":
        print("田中さんが見つかりました!")
        break

4.6 二重ループで表や表組みを作る

ループの中にループを入れることで、表のような二次元のデータを扱えます:

簡単な掛け算表

# 簡単な掛け算表
for i in range(1, 4):
    for j in range(1, 4):
        print(f"{i}×{j}={i*j}", end=" ")
    print()  # 改行

# 星のピラミッド
for i in range(1, 6):
    for j in range(i):
        print("★", end="")
    print()

"""
出力:

★★
★★★
★★★★
★★★★★
"""

4.7 無限ループに注意しよう

無限ループは、プログラムが永遠に止まらなくなる危険な状態です:

無限ループの例

# 危険な例(無限ループ)
count = 1
while count > 0:
    print(count)
    count += 1  # countが減らないので永遠に続く

# 安全な例(ちゃんと終了条件がある)
count = 1
while count <= 5:
    print(count)
    count += 1

無限ループを防ぐポイント

  1. while文の条件が最終的にFalseになることを確認
  2. 繰り返しの中で条件を変更する処理があることを確認
  3. breakで抜け出す方法を用意する

課題 1. 1 から 100 までの合計を求めるプログラム

1から100までの合計を求めるプログラム

# 方法1:forループを使う
total = 0
for i in range(1, 101):
    total += i
print(f"1から100までの合計:{total}")

# 方法2:whileループを使う
total = 0
num = 1
while num <= 100:
    total += num
    num += 1
print(f"1から100までの合計:{total}")

# チャレンジ:
# - 偶数だけの合計を求めてみよう
# - 3の倍数だけの合計を求めてみよう
# - 入力された数までの合計を求めてみよう

課題 2. 1 から 10 までの数字で掛け算表を表示するプログラム

1から10までの数字で掛け算表を表示するプログラム

# 見やすい九九表を作成
print("     ", end="")
for i in range(1, 11):
    print(f"{i:4}", end="")
print("\n" + "-" * 50)

for i in range(1, 11):
    print(f"{i:2}  |", end="")
    for j in range(1, 11):
        print(f"{i*j:4}", end="")
    print()  # 改行

"""
出力例:
     1   2   3   4   5   6   7   8   9  10
--------------------------------------------------
1  |   1   2   3   4   5   6   7   8   9  10
2  |   2   4   6   8  10  12  14  16  18  20
...
"""

# チャレンジ:
# - 表の範囲を変更できるようにしてみよう
# - 縦と横に線を引いて見やすくしてみよう
# - 3の段だけ色を変えてみよう(print文のオプションで)

まとめ

この章で学んだこと:

  • for文で決まった回数の繰り返し
  • while文で条件付きの繰り返し
  • break/continueでの制御
  • リストとの組み合わせ
  • 二重ループの使い方
  • 無限ループの注意点

次の章では、リストと辞書について詳しく学び、データを効率的に管理する方法を身につけます!